随笔分类 - Redis
摘要:概述 SpringBoot 整合 Redis 是使用 SpringData 实现的。 SpringData 是与 SpringBoot 齐名的顶级项目,整合了对常用数据库的模板型操作。 在 SpringBoot 2.x 之后,Jedis 被 Lettuce 替代了。 Jedis 采用的直连,多个线程
阅读全文
摘要:概述 Jedis 是 Redis 官方推荐的 Java 连接开发工具。 Jedis 客户端同时支持单机模式、分片模式、集群模式的访问模式: 通过构建 Jedis 类对象实现单机模式下的数据访问。 通过构建 ShardedJedis 类对象实现分片模式的数据访问。 通过构建 JedisCluster
阅读全文
摘要:使用缓存的问题 Redis 缓存的使用,极大的提升了应用程序的性能和效率,特别是数据查询方面。 但同时,它也带来了一些问题。其中,最要害的问题,就是数据的一致性问题,从严格意义上讲,这个问题无解。 如果对数据的一致性要求很高,那么就不能使用缓存。 另外的一些典型问题就是,缓存穿透、缓存雪崩和缓存击穿
阅读全文
摘要:概述 主从切换技术的操作是:当主机宕机后,需要手动把一台从机切换为主机。 这就需要人工干预,费事费力,还会造成一段时间内服务不可用。 这不是一种推荐的方式,更多时候,我们优先考虑哨兵模式。 Redis 从 2.8 开始正式提供了 Sentinel(哨兵) 架构来解决这个问题。 它是“谋朝篡位”的自动
阅读全文
摘要:概述 主从复制,是指将一台 Redis 服务器的数据,复制到其他的 Redis 服务器 前者称为主节点(master / leader),后者称为从节点(slave / follower)。 数据的复制是单向的,只能由主节点到从节点。 Master 以写为主,Slave 以读为主。 一个主节点可以有
阅读全文
摘要:概述 Redis 发布订阅(pub / sub)是一种消息通信模式 发送者(pub)发送消息,订阅者(sub)接收消息。 Redis 客户端可以订阅任意数量的频道。 订阅/发布消息图: 频道和订阅频道的客户端之间的关系: 当有新消息通过 publish 命令发送给频道, 这个消息就会被发送给订阅它的
阅读全文
摘要:概述 Redis 事务的本质是一组命令的集合 事务支持一次执行多个命令,一个事务中所有命令都会被序列化。 在事务执行过程,会按照顺序串行化执行队列中的命令,其他客户端提交的命令请求不会插入到事务执行命令序列中。 所以说:Redis 事务就是一次性、顺序性、排他性的执行一个队列中的一系列命令。 Red
阅读全文
摘要:概述 Redis 是内存数据库,即数据存储在内存。 如果不将内存中的数据保存到磁盘,一旦服务器进程退出,服务器中的数据也会消失。 这样会造成巨大的损失,所以 Redis 提供了持久化功能。 RDB RDB,即 Redis DataBase 在指定的时间间隔内将内存中的数据集快照写入磁盘。 也就是 S
阅读全文
摘要:基本配置 Redis 的配置文件位于 Redis 安装目录下,文件名为 redis.conf 在 Linux 中,可以使用 whereis redis 查找 Redis 的安装目录 [root@sail]# whereis redis redis: /usr/local/redis [root@sa
阅读全文
摘要:概述 Redis 从 2.2 版本增加了 Bitmap(位图) 当需要统计用户一年的某些信息,如活跃或不活跃,登录或不登录,打卡或没打卡。 如果使用普通的 key / value存储,则要记录 365 条记录,如果用户量很大,需要的空间也会很大。 Redis 提供了 Bitmap 位图这种数据结构,
阅读全文
摘要:概述 Redis 在 2.8.9 版本添加了 HyperLogLog 结构,用来做基数统计的算法 其优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定的,并且是很小的。 每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近 2 ^ 64 个不同元素的基数
阅读全文
摘要:Redis 的 GEO 特性在 3.2 版本中推出, 这个功能可以将用户给定的地理位置信息储存起来。通常用以实现诸如附近位置、摇一摇这类依赖于地理位置信息的功能。 GEO 的数据类型为 zset。总共有六个常用命令:geoadd、geopos、geodist、georadius、georadiusb
阅读全文
摘要:参考源 https://www.bilibili.com/video/BV1S54y1R7SB?spm_id_from=333.999.0.0 版本 本文章基于 Redis 6.2.6 Zset 就是 Set 的有序集合 应用场景:排行榜 赋值 一个或多个元素 Zadd 127.0.0.1:6379
阅读全文
摘要:哈希就是 key - map 的数据结构 应用场景:对象存储 赋值 单个哈希 Hset 127.0.0.1:6379> Hset hash f1 sail (integer) 1 多个哈希 Hmset 127.0.0.1:6379> Hmset hash f2 sail2 f3 sail3 OK 不
阅读全文
摘要:Set 中的值是不能重复的 应用场景:共同关注 赋值 插入值 Sadd 127.0.0.1:6379> Sadd set hello (integer) 1 127.0.0.1:6379> Sadd set world (integer) 1 127.0.0.1:6379> Sadd set wor
阅读全文
摘要:在 Redis 里面,可以把 List 当成栈、队列、阻塞队列使用。 List 实际是一个链表,左右都可以插入值。 如果 key 不存在,创建新的链表。 如果移除了所有元素,空链表也代表不存在。 在两边插入或者改动值,效率最高;操作中间元素,效率相对低一些。 **应用场景:**消息排队 赋值 从左插
阅读全文
摘要:应用场景:计数器、统计多单位的数量、粉丝数、对象缓存存储。 赋值 普通赋值 set 127.0.0.1:6379> set hello Hello World OK 不存在才赋值 setnx 127.0.0.1:6379> setnx hello Hello (integer) 0 127.0.0.
阅读全文
摘要:数据库 Redis 默认有 16 个数据库。 默认使用的是第 0 个数据库。 不同数据库存不同的值。 切换数据库 select 127.0.0.1:6379> select 1 OK 127.0.0.1:6379[1]> [] 中的数字即为数据库编号(0 号数据库为默认,不展示编号)。 查看当前数据
阅读全文
摘要:简介 NoSQL NoSQL(Not Only SQL),即不仅是SQL,泛指非关系型数据库。 NoSQL 易扩展,NoSQL 数据库种类繁多(MongoDB、Redis 等),共同的特点都是去掉关系数据库的关系型特性。 数据之间无关系,这样就非常容易扩展,无形之间也在架构的层面上带来了可扩展的能力
阅读全文