
redis
文章平均质量分 80
代码搬运工.
我不生产技术,我只是技术的搬运工。
展开
-
incr命令和expire命令的误区--举例每分钟访问次数限制
要实现的功能:限制用户的每分钟的访问次数 一个有严重bug的代码:每次访问来了,就执行代码块二,当第一次访问,就走else语句,设置当前用户的次数为1,且设置该key的有效期是一分钟。 在一分钟之内,第二次来访问了,就走if语句了,因为redis存在这个key了,就实现自增一,然后取出来判断是否超过了设定的阈值。逻辑上看似看似没什么问题。 代码块一: Long maxAllowedTime...转载 2018-10-15 09:51:30 · 1116 阅读 · 0 评论 -
Redis 内存使用优化与存储
Redis 常用数据类型 Redis 最为常用的数据类型主要有以下五种: String Hash List Set Sorted set 在具体描述这几种数据类型之前,我们先通过一张图了解下 Redis 内部内存管理中是如何描述这些不同数据类型的: 首先Redis内部使用一个redisObject对象来表示所有的key和value,redi...转载 2018-10-18 17:25:06 · 896 阅读 · 1 评论 -
Redis缓存穿透、缓存雪崩
把redis作为缓存使用已经是司空见惯,但是使用redis后也可能会碰到一系列的问题,尤其是数据量很大的时候,经典的几个问题如下:(一)缓存和数据库间数据一致性问题 分布式环境下(单机就不用说了)非常容易出现缓存和数据库间的数据一致性问题,针对这一点的话,只能说,如果你的项目对缓存的要求是强一致性的,那么请不要使用缓存。我们只能采取合适的策略来降低缓存和数据库间数据不一致的概率,而无法保证两者间的...转载 2018-10-19 10:26:23 · 182 阅读 · 0 评论 -
Redis中删除过期Key的三种策略
项目中有个接口要频繁调用查询数据库中的数据,为了降低数据库的压力,所以把一部分记录先缓存在redis中,对redis中的数据设置了期限。今天无意间发现一个问题,使用dbsize查询出来的数量,比实际缓存量要高一部分。用 redis-cli keys '*'|wc -l 获取到的数据和实际情况是一样的。如下面两图: 对比发现,redis中key的总量为286957,比数据库中的26403...转载 2018-10-17 10:09:38 · 5843 阅读 · 2 评论 -
Redis事务机制和分布式锁
事务机制 严格意义来讲,Redis的事务和我们理解的传统数据库(如mysql)的事务是不一样的;Redis的事务实质上是命令的集合,在一个事务中要么所有命令都被执行,要么所有事物都不执行。 一个事务从开始到执行会经历以下三个阶段: 开始事务。 命令入队。 执行事务。 在MySQL中我们使用START TRANSACTION 或 BEGIN开启一个事务,使用COMMIT提交一个事务;而在Red...转载 2018-10-22 14:42:39 · 246 阅读 · 0 评论 -
Redis持久化RDB与AOF
前言 我们知道Redis是一款内存服务器,就算我们对自己的服务器足够的信任,不会出现任何软件或者硬件的故障,但也会有可能出现突然断电等情况,造成Redis服务器中的数据失效。因此,我们需要向传统的关系型数据库一样对数据进行备份,将Redis在内存中的数据持久化到硬盘等非易失性介质中,来保证数据的可靠性。 将Redis内存服务器中的数据持久化到硬盘等介质中的一个好处就是,使得我们的服务器在重启之...转载 2019-01-03 10:59:12 · 215 阅读 · 1 评论 -
如何保证redis中存放的都是热点数据
当redis使用的内存超过了设置的最大内存时,会触发redis的key淘汰机制,在redis 3.0中有6种淘汰策略: noeviction: 不删除策略。当达到最大内存限制时, 如果需要使用更多内存,则直接返回错误信息。(redis默认淘汰策略) allkeys-lru: 在所有key中优先删除最近最少使用(less recently used ,LRU) 的 key。 allkeys-r...原创 2019-02-19 22:22:49 · 13270 阅读 · 2 评论