Redis学习笔记

Redis的分布式锁如何实现

1.加锁:利用setnx指令设置分布式锁,其中key是固定字符串,value是当前的机器码加上线程ID,机器码主要是为了区分不同机器
2.解锁:某个线程获取分布式锁后,执行业务,然后在finally代码块中执行解锁命令。其中解锁前先要判断redis中存储的value是否为当前机器码加上线程ID。只有同一个机器的同一个线程才能解锁成功。
3.finally代码块中,get和del并非原子操作,还是有进程安全问题。可以使用lua脚本,通过redis的eval/evalsha命令来运行。执行也是一个命令(eval/evalsha)去执行的,一条命令没执行完,其他客户端是看不到的。

跳跃表

跳跃表可以理解为分层的链表结构,每一层都是一个链表,链表中的元素是排好序。查找元素时会从高层开始往后找,如果找不到就往下一层找。他的一个查询效率和删除效率都为O(logn),效率比较高。通常是用在Redis中的SortSetS数据结构中。

布隆过滤器

布隆过滤器是用来进行大规模数据过滤的数据结构,可以从大规模的数据中判断当前数据,就是key是否合法。布隆过滤器本质上是一个bit数组,一位对应着一个数据,比起map,set占用空间更少,效率更高。元素在加入布隆过滤器时,会先计算一个哈希值,然后根据哈希值得到数组的下标,然后将下标修改为1。在判断一个元素是否在布隆过滤器时,也会进行哈希计算得到下标,判断当前下标的值是否为1,为1说明存在,不为1则不在。由于不同元素计算出的下标可能相同,所以可能出现误判的情况。但是对于不存在元素,是不会出现误判的。布隆过滤器通常用在防止黑客攻击中。

RDB和AOF的区别

RDB和AOF的区别
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容