随笔分类 - Redis
摘要:哨兵简介 1. redis提供了哨兵的命令,是一个独立的进程 2. 哨兵通过发送命令给节点,通过redis节点响应达到监控多个redis实例的运行情况 3. 当哨兵发现master宕机,会自动将从节点切换成主节点,并通知其他的从节点,修改配置文件切换主机 4. 默认端口是26379 哨兵的主要任务
阅读全文
摘要:相关配置 a. replica-read-only yes: 从节点开启只读模式 b. master-auth xxxx: 主节点访问密码 c. replicaof ip 端口:从哪个主节点进行复制 相关命令 info replication查看主从信息 主从复制分类 主从刚连接的时候,会进行全量同
阅读全文
摘要:在使用Redis的时候,可以设置key的过期时间,但是当key到达过期时间时,是否会被redis立即删除?答案是no。这里就涉及redis key的过期策略:定时删除和惰性删除 定期删除 隔一段时间,随机抽取一些设置过期时间的key,检查其是否过期,如果过期就删除 惰性删除 当客户访问数据时,如果过
阅读全文
摘要:redis支持两种持久化方式RDB(Redis Database)和AOF(Append only file)。 1. RDB a. 在指定的时间将内存中的数据集快照写入磁盘,默认存储文件的名称为dump.rdb b. RDB文件是一个紧凑压缩的二进制文件 c. 恢复大数据集的时候速度比AOF要快,
阅读全文
摘要:集群原理 哈希槽:redis共16384个哈希槽,数据会根据CRC16(key) mod 16384,决定存储在哪个哈希槽,这种将数据存储在不同节点不同哈希槽的行为被称为数据分片 从节点是没有哈希槽的,只有主节点才有 存储/读取的时候,先进行运算,如果计算的槽位在当前节点则直接进行存取,如果不在则进
阅读全文
摘要:总体来说,缓存在使用的过程中主要面临以下几个问题: 1. 缓存击穿(某个热点数据的key失效了) 缓存中无数据,但是数据库中有数据,由于是热点key,如果同一时间大量请求进来会导致数据库压力大增 2. 缓存雪崩 与缓存击穿类似,只不过缓存雪崩是多个热点key同时失效 3. 缓存穿透 查询不存在的数据
阅读全文
摘要:实际项目中,如果使用统一的key的生成方式,可以自定义KeyGenerator。 参考如下代码: 点击查看代码 ``` @Bean public KeyGenerator keyGenerator() { return new KeyGenerator() { @Override public Ob
阅读全文
摘要:从缓存中移除相应的数据,触发缓存删除操作 * value:缓存名称 * key:缓存的key规则,可以使用SpringEL,默认是方法参数组合 * beforeInvocation: 缓存的清除在方法调用之前执行还是之后执行,默认为false 参考如下代码: 点击查看代码 ``` @Override
阅读全文
摘要:根据方法的请求参数对结果进行缓存,每次都会触发真实的方法调用* * value:缓存名称 * 缓存的key规则,可以使用SpringEL,默认是方法参数组合 * 参数condition:满足condition才缓存 参照如下的例子: 点击查看代码 ``` @Override @CachePut(va
阅读全文
摘要:* 可以标记在方法上,也可以标记在类上 * 参数key:缓存的key规则,可以使用SpringEL,默认是方法参数组合 * 参数value:缓存名称,可以指定多个 * 参数condition:满足condition才缓存 先看下面简单的例子: 点击查看代码 ``` @Override @Cachea
阅读全文
摘要:Spring Cache 是Spring 提供的一套的缓存解决方案,它不是具体的缓存实现,提供了一整套的配置、接口、注解等规范,用来整合当下流行的多种缓存产品。 1. SpringCache的引入 点击查看代码 ``` org.springframework.boot spring-boot-sta
阅读全文
摘要:在SpringBoot的项目中,可以通过引入spring-data-redis包来获得对redis的支持,其中RedisTemplate又是使用这些API的入口。在pom文件可以通过如下代码引入spring对redis的支持: 引入redis ``` <dependency> <groupId>or
阅读全文
摘要:将元素及其分数加入到有序集合当中 常用场景 实时排行榜:积分榜、商品热销榜 优先级任务、队列 朋友圈文章点赞、取消 底层结构 Ziplist压缩列表或跳跃表 常用命令 ZADD key score1 member1 score2 member2, 向有序集合添加一个或多个成员,或更新现有成员的分数
阅读全文
摘要:不存在重复元素的集合 常用场景 去重 用户画像标签 常用命令 SADD key member... 为set增加元素 SCARD key 返回set中元素的数量 SDIFF key1 key2返回两个set的差集 SINTER key1 key2 求交集 SISMEMBER key member S
阅读全文
摘要:一个string类型的key-value映射表 常用场景 购物车 用户个人信息 商品详情 常用命令 hset key field value 设置hash的值 hget key field 获取值 hgetall key 获取全部内容 hdel key field 删除指定field的值 hexis
阅读全文
摘要:字符串列表,按照插入的顺序进行排序,其底层是双向链表。 常用场景 简单队列 评论列表/非实时榜单 常用命令(https://try.redis.io/) lpush 在列表头部插入元素 llen 获取列表长度 lrange 获取列表元素,从0开始,-1表示最后 rpop 在列表尾部弹出元素,返回获取
阅读全文
摘要:存储字符串类型的key-value形式 常用场景 验证码 计数器 重复提交:生成随机token,提交后token删除,token存在redis中 复杂信息的序列化存储 常用命令(https://try.redis.io/) set/get mset/mget incr 增加1 incrby 增加指定
阅读全文