Redis
文章平均质量分 72
Zevin~
这个作者很懒,什么都没留下…
展开
-
RedisBloom-Cuckoo-Filter源码剖析
CuckooFilter(相当于一个链表每个节点元素都是一个CuckooFilter过滤器(定义为SubCF))SubCF(每一个cuckoofilter子节点)Cuckookey(每一个value都有两个索引位置和一个8位指纹)原创 2023-05-10 21:37:04 · 348 阅读 · 1 评论 -
Redis源码剖析---跳表
跳表节点的定义//如果score相等,再按照ele排序 typedef struct zskiplistNode {sds ele;//节点存储的具体的值 double score;//存储的分值,我们就是按照这个分值来进行排序的 struct zskiplistNode * backward;//后退指针,用于指向前一个节点,进行反向遍历(zrerange) struct zskiplistLevel {原创 2023-03-24 17:12:57 · 307 阅读 · 0 评论 -
Redis集群
集群会记录节点和槽的对应关系,解决了节点和槽的关系值后,接下来就需要对key球hash值,然后对16384取模,余数是几,key就落入对应的槽中,HASH——SLOT=CRC16(key)mode16384,以槽为单位移动数据,因为槽是固定的,处理起来比较容易,数据移动问题就解决了。集群节点越多,心跳包的消息体内携带的数据越多,如果超过了1000个节点,会网络拥堵,因此不建议超过1000个节点,而对于1000个节点以内的redis集群,16384个槽位置绝对够用了,没必要超过65536。原创 2023-03-20 19:41:20 · 340 阅读 · 0 评论 -
Redis管道
管道是用来优化客户端与服务器之间命令执行的往返时间Redis的管道通过将原本多个命令进行打包进行一次性的执行,减少客户端与服务器之间的通信次数来减少每一次等待命令的往返的时间//多个命令set k1 v1set k2 v2set k3 v4//打包一次执行多个命令客户端向服务器发送命令步骤客户端发送命令将发送的命令进行排队依次执行命令在服务端进行执行服务端返回执行的结果往返时间(RTT减少需要多次调用read和write。原创 2023-03-16 18:01:12 · 360 阅读 · 0 评论 -
Redis事务
此时有另一个客户端对该key值进行了修改,在watched的客户端中将事务进行提交,就会返回一个nil(整个事务都会被中断)如果在一个客户端里面对一个key进行了监控并在一个事务里面了(不允许正在被watch的对象,被别人使用)将一套redis指令集合作为一个整体的事务,按照顺序将事务进行执行而不会被打断。(取消对某一个key的监控)原创 2023-03-16 17:06:04 · 232 阅读 · 0 评论 -
Redis持久化
AOF优点AOF每隔1s进行将缓冲区的数据写入到磁盘上,这样既能够保持高的性能,也能够在故障的时候最多只会丢失1s的数据,可以把损失降到最低AOF只有append操作,没有seek等操作,即使最后的数据被截断,也可以使用redis-check-aof工具来进行恢复AOF文件变大的时候,可以进行重写来缩小AOF缺点AOF体积比RDB文件要大,数据的恢复速度也比较慢RDB优点RDB可以快速恢复数据,比AOF一条一条进行恢复数据要快很多RDB对灾难恢复和数据迁移比较友好RDB缺点。原创 2023-03-15 20:52:32 · 310 阅读 · 0 评论 -
redis数据类型(1)
命令不区分大小写,而key是区分大小写的。原创 2023-03-14 15:39:09 · 190 阅读 · 0 评论 -
redis数据类型(2)
redis发布订阅缺点:消息无法实现持久化,如果出现网络断开,Redis宕机,消息就会被丢弃,也没有ack机制来保证消息的可靠性,加入消费者都没有了,消息就直接丢弃。实现了消息队列,支持消息的持久化,支持自动生成全局唯一的ID,支持ack确认消息的模式,支持消费组模式,让消息队列更加稳定和可靠。在输入元素的数量或者体积非常大的时候,计算基数所需要的空间总是很大的。一次性的操作多个比特位域(指的是连续的多个比特位),由二进制的数组。位图,最多可以存储2^32位,它可以极大的节约存储空间。原创 2023-03-14 15:20:02 · 210 阅读 · 0 评论