Redis基本语法使用教程
常用命令
字符串String
set k1 v1 设置k1的值为v1
get k1 获取k1的值
del k1 删除k1
exists k1 判断k1是否存在
keys *me 查找me结尾的key是否存在
clear 清空控制台
flushall 清除所有内容
启动redis-cli时增加--raw参数可以原始数据显示,用于中文
TTL(Time to Live) k1 获取k1的生存周期
expire k1 5 5秒后k1失效被清除
setex k1 5 hello 设置k1的值为hello且5秒后过期
setnx k1 hello 当k1不存在时才设置k1为hello
列表List
lpush Quisper a 列表Quisper头部插入元素
rpush Quisper b 列表Quisper尾部插入元素
lpop Quisper 列表Quisper头部弹出元素
rpop Quisper 列表Quisper尾部弹出元素
lrange Quisper 0 -1 列出列表Quisper指定范围内的元素,-1表示末尾
llen Quisper 获取列表Quisper元素个数
ltrim Quisper 1 3 删除列表Quisper指定范围(1,3)外的元素
集合Set
sadd Quisper v1 集合Quisper添加元素v1
smembers Quisper 查看集合Quisper中所有元素
sismember Quisper 查看元素是否在集合Quisper中
srem Quisper v1 删除集合Quisper中的元素v1
有序集合SortedSet
zadd Quisper v1 100 集合Quisper添加元素v1:100
zrange Quisper 0 -1 查看集合Quisper从0到末尾的所有元素,添加WITHSCORES参数可以输入对应的分数
zscore Quisper v1 查看集合Quisper中元素v1的分数
zrank Quisper v1 查看集合Quisper中元素v1的排名
zrevrank Quisper v1 反转查看集合Quisper中元素v1的排名
zrem Quisper v1 删除集合Quisper中元素v1
哈希Hash
hset person name Quisper 设置person的姓名键值对
hget person name 获取person的name的值
hgetall person 获取person的所有键值对
hdel person name 删除person的键值对name
hexists person name 判断person的键值对name是否存在
hkeys person 获取person的所有键名
hlen person 获取person的键值对的数量
订阅模式
subscribe channel1 订阅频道channel1
publish channel1 Quisper 在channel1中发布消息Quisper
消息队列Strem
xadd 消息队列名 * 键值对: 添加消息,*表示自动生成消息ID
xlen 消息队列名: 获取消息队列名的数量
xrange 消息队列名 - + :获取消息的详细内容
xdel 消息队列名 消息ID: 删除消息
xtrim 消息队列名 MAXLEN 0: 删除所有消息
xread count 2 block 1000 streams 消息队列名 0: 从0位置开始读取消息队列名2条消息,没有则阻塞1000毫秒,使用$则是当前位置
xgroup create Quisper group1 0: 创建一个id为0的消费者组group1去消费Quisper消息队列
xgroup info Quisper:查看该消息队列中的所有信息,包括消费者组等
xgroup createconsumer Quisper group1 consumer1:在消费者组group1中创建消费者consumer1去消费消息队列Quisper
xreadgroup group group1 consumer1 count 2 block 1000 streams Quisper >:消费者组group1中的消费者consumer1从消息队列Quisper读取最新的2条消息,没有则阻塞1000毫秒
地理空间Geospatial
geoadd city 116.12 39.41412 beijing 添加城市beijing的经纬度
geopos city beijing 获取beijing的经纬度
geodist city beijing shanghai 计算beijing和shanghai之间的直线距离,添加参数KM换算成千米
geosearch city frommember shanghai byradius 300 KM 搜索以shanghai为中心,300千米为半径的圆形范围内的城市
HyperLogLog
基数统计算法,基数:非重复元素个数
pfadd course git docker redis 给course添加git、docker、redis元素
pfcount course 查看course基数
pfmerge result course course2 合并course和course2并把结果放到result中去
位图Bitmap
setbit dianzan 0 1 在dianzan的0位置上设置为1
getbit dianzan 0 获取dianzan的0位置上的值
set dianzan “\xF0” 设置dianzan的前八位为11110000
bitcount dianzan 获取dianzan中值为1的个数
bitpos dianzan 1 获取dianzan中第一个出现1的位置,也可以换成0
位域Bitfield
bitfield player:1 set u8 #0 1 配置玩家player的id是1,等级是u8类型,放在位域的第一个位置,值为1
bitfield player:1 get u8 #0 1 获取玩家player:1的等级
bitfield player:1 incrby u32 #1 100 玩家player:1的金钱(第二个位置)增加100
事务
相当于批量指令(感觉不算事务啊),不会对结果进行校验回滚。使用multi开启,使用exec/discard结束
持久化
RDB方式 Redis Database
多用于备份
配置文件:save 3600 100 3600秒内有100次修改就写入快照
手动命令行:save 直接保存
创建子进程进行保存:bgsave
AOF方式 Apped Only File
将命令写入文件从而重启时重新执行命令,恢复数据库,通过配置文件写入appendonly yes开启
主从复制
只能主节点复制到从节点,主节点负责写,有变化后异步发送给从节点。
配置只需要修改从节点配置即可,修改从节点配置文件redis_6380.conf的端口号port以及进程ID配置文件pidfile、从数据库名dbfilename、主节点服务replicaof localhost 6379
连接从节点后可以使用info replication命令查看节点信息
哨兵模式
功能
独立运行Redis集群中,监控各节点是否运行正常。
监控:通过不断发送命令来检查各个Redis节点是否正常
通知:如果某个节点出现问题,通过发布订阅模式来通知其他节点
自动故障转移:当主节点出现问题时,哨兵将进行自动故障转移操作,将其中一个从节点提升为主节点,再将其他从节点指向新的主节点
启动方式
新增配置文件:sentinel.conf
增加下列配置信息:
sentinel monitor master 127.0.0.1 1#master主节点名称,127.0.0.1为主节点ip地址,1为只需要一个哨兵节点同意就可以转移命令行执行:redis-sentinel sentinel.conf启动哨兵节点
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!
部分内容可能已过时