
Redis
飞翔的乌龟
这个作者很懒,什么都没留下…
展开
-
Centos7安装Redis6.0时make出现报错
服务器为CentOS7,从官网下载Redis安装包后,解压执行make命令,出现了如下报错信息:make[1]: *** [server.o] Error 1make[1]: Leaving directory `/root/redis-6.0.1/src'make: *** [install] Error 2出现这个问题需要先确认GCC的版本,命令如下:gcc -v发现CentOS7默认的gcc版本为4.8.5,安装Redis6.0需要将gcc版本升级到5.3以上,则升级gcc命令原创 2020-07-02 16:13:40 · 4775 阅读 · 5 评论 -
Redis缓存雪崩问题
概念由于缓存层承载着大量请求, 有效地保护了存储层, 但是如果缓存层由于某些原因不能提供服务(大量的缓存数据过期), 于是所有的请求都会达到存储层, 存储层的调用量会暴增, 造成存储层也会级联宕机的情况。解决方案1)保证缓存层服务高可用性。 和飞机都有多个引擎一样, 如果缓存层设计成高可用的,将热点数据均匀分布在不同的服务器中, 即使个别节点、 个别机器、 甚至是机房宕掉, 依然可以提...原创 2020-01-22 00:19:17 · 179 阅读 · 1 评论 -
Redis缓存穿透和缓存击穿问题
缓存穿透 描述:缓存穿透是指缓存和数据库中都没有的数据,而用户不断发起请求,且请求的数据均为不存在的数据(id为-1这种)。 解决方案:接口进行参数校验,将必要的参数进行基础校验,超过参数范围则直接拦截; 从缓存取不到的数据,在数据库中也没有取到,这时也可以将key-value对写为key-null,缓存有效时间可以设置短点,如30秒(设置太长会导致正常情况也没法使用)。...原创 2020-01-22 00:06:59 · 479 阅读 · 0 评论 -
Redis的缓存更新策略
1.超时剔除 使用场景: 超时剔除通过给缓存数据设置过期时间, 让其在过期时间后自动删除, 例如Redis提供的expire命令。 如果业务可以容忍一段时间内, 缓存层数据和存储层数据不一致, 那么可以为其设置过期时间。 在数据过期后, 再从真实数据源获取数据, 重新放到缓存并设置过期时间。 例如一个视频的描述信息, 可以容忍几分钟内数据不一致, 但是涉及交易方面的业务,后果可想而知。 ...原创 2020-01-21 23:51:07 · 685 阅读 · 0 评论 -
SpringBoot使用Redission实现分布式锁
首先在pom.xml文件中添加如下依赖:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId></dependency>&l...原创 2020-01-21 23:28:27 · 883 阅读 · 0 评论 -
Java使用Redis实现分布式锁-代码简便
首先针对分布式锁的实现,需要注意如下几点:不会发生死锁(及时客户端持有锁期间崩溃,需要保证其他客户端可以解锁) 容错(大部分redis节点正常运行即可) 互斥(只有一个客户端可以持有锁) 加锁和解锁必须是用一个客户端public class RedisTool { private static final String LOCK_SUCCESS = "OK"; pr...原创 2020-01-21 22:40:11 · 190 阅读 · 0 评论 -
Redis持久化原理之RDB和AOF
Redis 有两种持久化方案,RDB (Redis DataBase)和 AOF (Append Only File)。RDB RDB 是 Redis 默认的持久化方案。在指定的时间间隔内(周期性),执行指定次数的写操作,则会将内存中的数据写入到磁盘中。即在指定目录下生成一个dump.rdb文件。Redis 重启会通过加载dump.rdb文件恢复数据。触发RDB持久化过程分为手动...原创 2020-01-21 19:48:24 · 333 阅读 · 0 评论 -
Redis数据结构执行时间
String String是Redis的基础数据类型,Redis没有Int、Float、Boolean等数据类型的概念,所有的基本类型在Redis中都以String体现。 SET:时间复杂度O(1) GET:时间复杂度O(1) GETSET:时间复杂度O(1) MSET:时间复杂度O(N) MSETNX:同MSET,如果指定的key中有任意一...原创 2020-01-21 17:28:47 · 763 阅读 · 0 评论