
Redis
lzcWHUT
这个作者很懒,什么都没留下…
展开
-
Redis的过期策略和内存淘汰策略
Redis的过期策略我们都知道,Redis是key-value数据库,我们可以设置Redis中缓存的key的过期时间。Redis的过期策略就是指当Redis中缓存的key过期了,Redis如何处理。过期策略通常有以下三种:定时过期:每个设置过期时间的key都需要创建一个定时器,到过期时间就会立即清除。该策略可以立即清除过期的数据,对内存很友好;但是会占用大量的CPU资源去处理过期的数据,从...转载 2019-07-29 10:36:28 · 139 阅读 · 0 评论 -
Redis 事务
Redis 事务redis事务特征事务的错误处理语法错误运行错误Watch命令如何使用watch命令利用watch实现incrredis事务特征和众多其它数据库一样,Redis 作为 NoSQL 数据库也同样提供了事务机制。在Redis中,MULTI / EXEC / DISCARD / WATCH 这四个命令是我们实现事务的基石。相信对有关系型数据库开发经验的开发者而言这一概念并不陌生,即便...原创 2019-07-25 15:34:09 · 149 阅读 · 0 评论 -
跳表
跳表(skip list) 对标的是平衡树(AVL Tree),是一种 插入/删除/搜索 都是 O(log n) 的数据结构。它最大的优势是原理简单、容易实现、方便扩展、效率更高。因此在一些热门的项目里用来替代平衡树,如 redis, leveldb 等。跳表的基本思想首先,跳表处理的是有序的链表(一般是双向链表,下图未表示双向),如下:这个链表中,如果要搜索一个数,需要从头到尾比较每个元...原创 2019-07-25 12:08:01 · 3679 阅读 · 3 评论 -
Redis的LRU算法
Redis的LRU算法LRU算法背后的的思想在计算机科学中无处不在,它与程序的"局部性原理"很相似。在生产环境中,虽然有Redis内存使用告警,但是了解一下Redis的缓存使用策略还是很有好处的。下面是生产环境下Redis使用策略:最大可用内存限制为4GB,采用 allkeys-lru 删除策略。所谓删除策略:当redis使用已经达到了最大内存,比如4GB时,如果这时候再往redis里面添加新的...原创 2019-07-24 16:06:27 · 284 阅读 · 0 评论 -
MySQL和Redis实现分布式锁
MySQL和Redis实现分布式锁1. 为何需要分布式锁2. 分布式锁的一些特点3. 常见的分布式锁4. Mysql实现分布式锁4.1 lock()4.2 tryLock()和tryLock(long timeout)4.3 unlock()4.4 锁超时4.5 MySQL实现方式小结4.6 乐观锁5. Redis实现分布式锁5.1 使用setnx实现5.2 使用Redission来实现5.3 R...原创 2019-07-24 18:50:05 · 2864 阅读 · 2 评论 -
redis阻塞处理分析
1.内因:A.api或数据结构使用不合理: 如:对一个包含上万元素的hash结构执行hgetall操作,数据量大且命令复杂度O(n),必然阻塞B.慢查询:和很多关系型数据库(例如:MySQL)一样, Redis 也提供了慢查询日志记录,Redis 会把命令执行时间超过 slowlog-log-s...转载 2019-07-29 12:53:29 · 376 阅读 · 0 评论 -
基于Redis的分布式令牌桶限流器
本文根据GuavaRateLimiter令牌桶限流器修改的基于Redis的分布式限流器。令牌桶采用横定速率生成令牌存放入桶中,通过计算获取指定令牌数所需要的等待时间来进行限流。注:其中对于令牌桶的更新需要依赖分布式同步锁:DistributedLock本文采用基于Redis的RedLock来实现,请参见本人另外的一篇文章:MySQL和Redis实现分布式锁1. Guava RateLi...转载 2019-07-29 15:19:59 · 1642 阅读 · 0 评论