本文共 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
$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
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
//向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