-- 返回key的全部个数
dbsize
-- 从海量key查询全部固定前缀的key
keys k1*
-- 从海量key查询某一个固定前缀的key
scan 0 match k1* 10
-- 如何通过redis解决分布式事务锁
需要解决的问题:互斥性、安全性、死锁、容错
setnx locknx test -- 设置key锁
expire locknx 2 -- 设置key过期
setnx locknx task
set locktarget 12345 ex 10 nx -- 设置key 10秒过期
-- redis实现异步队列
使用list作为队列,rpush生产消息,lpop消费消息(不等待,直接消费)
rpush testlist aaa -- 消息加入队列
rpush testlist bbb
lpop testlist -- 取值
-- 没有消息,等待消息到来消费
blpop testlist 30 -- 等待30取值,超时返回nil
-- 一次生产多个消费者消费
subcribe mytopic -- 客户端1订阅mytopic(可以多个客户端订阅)
publish mytopic "Hello" -- 发布消息(发布后监听的客户端可收到消息)
-- redis持久化
RDB(快照)持久化:保存某个时间点的全量数据快照
redis.conf -- 快照备份时间配置文件
-- reids同步原理
salve发送sync命令到master
master启动一个后台进程,将redis中的数据快照保存到文件中
mater将保存数据快照期间接收到的写命令缓存起来
mater完成写文件后,将文件发给salve
使用新的AOF文件替换掉旧的AOF文件
mater将这期间收集到的增量写命令发送给salve端
-- redis sentiel
解决主从同步master宕机后的主从切换问题
1.监控主从服务器是否正常
2.提醒:通过API向管理员或者其他应用程序发送故障通知
3.自动故障迁移:主从切换
-- redis集群原理
如何从海量数据里快速找到所需?
分片:按照某种规则去划分数据,分散存储在多个节点上
一致性哈希算法:对2(32次方)取模,将哈希值空间组织成虚拟的圆环