博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Redis 日常操作
阅读量:2391 次
发布时间:2019-05-10

本文共 2801 字,大约阅读时间需要 9 分钟。

常见问题:

1、Redis中删除过期Key的三种策略,原理
2、利用Redis构建集群
3、Redis事务管理
4、发布与订阅
5、Redis连接数一直比较高
6、redis的配置文件可以通过info命令下面的config_file获得

目录

文章目录

基本操作

# 启动 安装完Redis后执行以下命令启动redis,/usr/local/etc/redis.conf配置文件文件路径redis-server /usr/local/etc/redis.conf# 客户端连接服务器redis-cli -h 192.168.10.151 -p 7777# 查看redis的版本redis-cli -v# 如果设置了登陆密码auth password
  • shutdown 关闭Redis服务器
$src/redis-cliredis 127.0.0.1:6379> shutdown

全局命令

参考地址

http://redisdoc.com/index.html

  • 键操作
# 查看所有键keys *# 键总数dbsize# 检查键是否存在,1是存在,0是不存在exists key# 返回 key 所关联的字符串值,如果 key 不存在那么返回特殊值 nil 。get key# 删除键,删除给定的一个或多个 key ,不存在的 key 会被忽略。del key [ key ... ]# 过期键expire key seconds# 键的数据类型type key
  • 服务器管理
# 测试服务器是否联通pingecho# 选择一个数据库select 1# 退出当前客户端进程quit# 列出全部参数info# 只列出内存相关部分info info memory# 列出客户端client list# 命令监控monitor# 清除当前数据库中的数据,默认是0号数据库flushdb# 清除所有数据库的数据flushshall
  • 系统参数的配置
# config 查询config get dirconfig get *# 配置连接过期自动清除时间config set timeout 30# 将配置写入到redis.confconfig rewrite

redis数据类型及操作

string

# 设置一个值set mykey somevalue# 查get mykey# 给key设置一个新值value,同时返回上一个值getset count 2

list类型及操作

lpush  list 'word'lrange list

hash

# 获得值hget key field# 计算field的个数hlen key# 获得所有的fieldhkeys key

事务

# 开启事务multi# 提交exec# 取消discard

set的操作

# 添加sadd myset "woeu" # 查看smembers myset # 指定删除srem myset woeu# 随机删除,并返回删除元素spop myset# 返回一个与第一个交集的差集sdiff myset1 myset2# myset1与myset2的差集存储到myset4sdiffstore myset4 myset1 myset2setnx

更多命令可查看:

https://blog.csdn.net/chenlushun12/article/details/79356989

发布订阅

# 向channel发布message1publish channel message1# 订阅消息subscribe channel# 取消订阅unsubscribe channel

spring 提供的API

//向redis里存入数据和设置缓存时间 stringRedisTemplate.opsForValue().set("test", "100",60*10,TimeUnit.SECONDS); //val做-1操作 stringRedisTemplate.boundValueOps("test").increment(-1);//根据key获取缓存中的val  stringRedisTemplate.opsForValue().get("test"); //val +1  stringRedisTemplate.boundValueOps("test").increment(1);//根据key获取过期时间stringRedisTemplate.getExpire("test");//根据key获取过期时间并换算成指定单位  stringRedisTemplate.getExpire("test",TimeUnit.SECONDS);//根据key删除缓存  stringRedisTemplate.delete("test");//检查key是否存在,返回boolean值  stringRedisTemplate.hasKey("546545");//向指定key中存放set集合stringRedisTemplate.opsForSet().add("red_123", "1","2","3");//设置过期时间  stringRedisTemplate.expire("red_123",1000 , TimeUnit.MILLISECONDS);//根据key查看集合中是否存在指定数据stringRedisTemplate.opsForSet().isMember("red_123", "1");//根据key获取set集合  stringRedisTemplate.opsForSet().members("red_123");

分布式锁

先看几个命令:

setnx key value

当且仅当 key 不存在,将 key 的值设为 value ,并返回1;若给定的 key 已经存在,则 SETNX 不做任何动作,并返回0。

getset key value

将给定 key 的值设为 value ,并返回 key 的旧值 (old value),当 key 存在但不是字符串类型时,返回一个错误,当key不存在时,返回nil。

主从复制

# 建立复制127.0.0.1:6379> slaveof 192.168.10.151 7777OK# 断开复制127.0.0.1:6379> slaveof no oneOK

slave连上去,master会生成一个rdb文件,slave进行重演。

复制的过程当中,如果数据比较大,比如有40GB的数据,就会很慢,可能需要30、40s不能提供服务。这种情况我们是不能接受的。

集群

参考文档

http://redisdoc.com/index.html

你可能感兴趣的文章
推荐 OWASP - Transport Layer Protection Cheat Sheet
查看>>
AutoNessus v1.3.2 released
查看>>
hack tools
查看>>
rhel5中管理swap空间
查看>>
/proc filesystem allows bypassing directory permissions on Linux
查看>>
nginx dos
查看>>
RASP解决方案包括开源方案
查看>>
Linux下共享文件系统文件传输的简单设计(转载)
查看>>
点评Ubuntu下的文件安全删除工具
查看>>
数据可视化
查看>>
Security Ressources Sites
查看>>
mysql的比较运算
查看>>
Data Breach Report
查看>>
再探偏移注射
查看>>
DNS Security Tips
查看>>
符号执行
查看>>
Remote Installation Service (RIS) in Windows Server 2003
查看>>
Layer Four Traceroute
查看>>
Hardening guide for Apache 2.2.15 on RedHat 5.4 (64bit edition)
查看>>
Microsoft Outlook Web Access (OWA) version 8.2.254.0 information disclosure vulnerability
查看>>