首页 > 其他 > 详细

redis

时间:2020-09-30 09:29:24      阅读:25      评论:0      收藏:0      [点我收藏+]

list
quicklist
ziplist<==>ziplist<==>ziplist(多个连续的空间)

zset
跳跃列表
L2 25%
L1 50%
L0 100%
排好序,二分查找法,查找到合适的地方进行插入

位图不是特殊的数据结构,内容就是普通的字符串,byte数组,可以使用get/set直接获取和设置整个位图的内容,也可以使用
getbit/setbit将byte数组看成位数组来处理

分布式锁
setnx+expire 需要是一个原子操作
不能处理较长时间的业务逻辑,set的时候设置一个随机数,然后删除的时候,判断是否跟这个随机数一致

Hyperloglog:提供不精确的去重计数方案
布隆过滤器:判断元素是否在里面,有误判。可以装入大量的数据,如果使用set空间太大了

漏斗限流

GEOHASH

主从同步
CAP
网络分区发生时,一致性和可用性两难全
redis满足最终一致性,
1.增量同步
主节点将修改性指令记录在本地内存buffer中,然后异步的将buffer中的指令同步到从节点,从节点一边同步指令,一边向主机点反馈同步的地点
buffer是环形数组,如果满了,从头覆盖内容
2.快照同步
如果主从长时间断开,则会快照同步,主库bgsave,然后将快照内容传递给从节点,从节点执行全量加载,需要设置正确的buffer大小,避免快照同步的死循环
从节点刚刚假如集群时,会先执行一次快照同步,然后执行增量同步
3.主从复制是分布式的基础,如果只当缓存用无需,如果用到了持久化功能,就必须认真对待主从同步,是数据安全的保障

sentinel
当故障发生时,自动的进行主从切换
redis-sentinel --- redis-sentinel --- redis-sentinel(3-5个)
master master master
slave slave slave

c->redis-sentinel(返回master地址)
连接池建立新连接时,会去查询主库地址,然后跟内存中的主库地址比对,如果变更了,就断开所有连接

codis
集群方案之一
1024个slot
key->crc32->%1024 的值就是key对应的槽位
每个槽位,对应唯一的redis实例

cluster
官方的redis集群方案
去中心化
16384slot

redisnode(slot) -- redisnode(slot) -- redisnode(slot)
key->crc32->%16384 的值就是key对应的槽位

迁移工具:redis_trib
从源节点获取内容->存到目标节点->从源节点删除

stream
是可持久化的消息队列
stream消息模型借鉴了kafka的消息分组的概念,弥补了pub/sub不能持久化的缺点,kafka可以分partition而redis不行,

info
了解redis的运行状态,内部一系列运行参数
info stats
monitor:快速观察哪些key访问比较频繁

info client:redis连接了多少客户端 client list

info memory

复制缓冲区
info replication
info stats|grep sync

分布式锁

过期策略
redis将设置了过期的key放入一个独立的字典中,以后定时遍历这个字典来删除,还有惰性删除,惰性删除就是在访问key的时候,发现过期了就立马删除
定时删除是集中处理,惰性删除是零散处理
给过期时间加一个随机值,防止在同一个时间过期

redis

原文:https://www.cnblogs.com/zzyoucan/p/13752581.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!