![](https://img-blog.csdnimg.cn/e658358391ca462fa47a6cc94b0129fb.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
CodeJiao的Redis修炼之路
文章平均质量分 94
CodeJiao的Redis修炼之路
CodeJiao
须知少年凌云志 曾许天下第一流
展开
-
Redis 进阶 -- 发布与订阅
Redis的发布与订阅功能可以让客户端通过广播方式,将消息同时发送给可能存在的多个客户端,并且发送消息的客户端不需要知道接收消息的客户端的具体信息。在Redis中,客户端可以通过订阅特定的频道来接收发送至该频道的消息,我们把这些订阅频道的客户端称为订阅者。一个频道可以有任意多个订阅者,而一个订阅者也可以同时订阅任意多个频道。除此之外,客户端还可以通过向频道发送消息的方式,将消息发送给频道的所有订阅者,我们把这些发送消息的客户端称为发送者。除了订阅频道之外,客户端还可以通过订阅模式来接收。原创 2022-05-17 01:11:18 · 2380 阅读 · 0 评论 -
Redis 进阶 -- 持久化(RDB持久化、AOF持久化、RDB-AOF混合持久化、无持久化)
Redis的持久化功能可以将存储在内存中的数据库数据以文件形式存储到硬盘,并在有需要时根据这些文件的内容实施数据恢复。RDB持久化是一种全量持久化方式,可以创建出经过压缩的时间点二进制快照文件,并通过载入文件中的二进制数据来实施数据恢复。这种持久化的优点是可以高效地生成文件并且快速地实施数据恢复,缺点则是文件生成间隔较长以及停机时数据丢失量较大。AOF持久化是一种增量式持久化功能,可以创建出协议文本格式的文件,文件中以协议形式记录了服务器执行过的所有命令,服务器可以通过重新执行文件中保存的命令。原创 2022-05-16 17:41:07 · 616 阅读 · 0 评论 -
Redis 进阶 -- 流水线与事务、事务的安全性(ACID性质)
在通常情况下,程序需要执行的Redis命令越多,需要进行的网络通信次数也会越多,程序的执行速度也会变得越慢。通过使用Redis的流水线特性,程序可以一次把多个命令发送给Redis服务器,这可以将执行多个命令所需的网络通信次数从原来的N次降低为1次,从而使得程序的执行效率得到显著提升。通过使用Redis的事务特性,用户可能将多个命令打包成一个命令执行:当事务成功执行时,事务中包含的所有命令都会被执行;相反,如果事务执行失败,那么它包含的所有命令都不会被执行。Redis事务具有ACID性质。原创 2022-05-16 15:09:00 · 419 阅读 · 0 评论 -
Redis 基础 -- 数据自动过期(EXPIRE、PEXPIRE、SET命令的EX选项和PX选项、EXPIREAT、PEXPIREAT、TTL PTTL:获取键的剩余生存时间)
EXPIRE命令和PEXPIRE命令可以为键设置生存时间,当键的生存时间随着时间的流逝而消耗殆尽时,键就会被移除。对已经带有生存时间的键执行EXPIRE命令或PEXPIRE命令,将导致键已有的生存时间被新的生存时间替代。为了方便用户,Redis给SET命令增加了EX和PX两个选项,它们可以让用户在执行SET命令的同时,执行EXPIRE命令或PEXPIRE命令。EXPIREAT命令和PEXPIREAT命令可以为键设置UNIX时间戳格式的过期时间,当系统时间超过这个过期时间时,键就会被移除原创 2022-05-08 12:51:08 · 8151 阅读 · 0 评论 -
Reids 基础 -- Redis数据库通用命令(SELECT、KEYS、SCAN、RANDOMKEY、SORT、EXISTS、DBSIZE、TYPE、RENAME、MOVE、DEL...)
所有Redis键,无论它们是什么类型,都会被存储到数据库中。一个Redis服务器可以同时拥有多个数据库,每个数据库都拥有一个独立的命名空间。也就是说,同名的键可以出现在不同数据库中。在默认情况下,Redis服务器在启动时将创建16个数据库,并使用数字0~15对其进行标识。因为KEYS命令在数据库包含大量键的时候可能会阻塞服务器,所以我们应该使用SCAN命令来代替KEYS命令。通过使用SORT命令,我们可以以多种不同的方式,对存储在列表、集合以及有序集合中的元素进行排序。原创 2022-05-08 11:01:13 · 2043 阅读 · 0 评论 -
Redis基础 -- 流(stream)类型 和 流(stream)类型的常用命令
流(stream)是Redis 5.0版本中新增加的数据结构,也是该版本最重要的更新。在以往的版本中,为了实现消息队列这一常见应用,用户往往会使用列表、有序集合和发布与订阅这3种功能,但这些不同的实现都有各自的缺陷:列表实现的消息队列虽然可以快速地将新消息追加到列表的末尾,但因为列表为线性结构,所以程序如果想要查找包含指定数据的元素,或者进行范围查找,就需要遍历整个列表。有序集合虽然可以有效地进行范围查找,但缺少列表和发布与订阅提供的阻塞弹出原语,这使得程序无法使用有序集合去实现可阻塞的消息弹出操作。原创 2022-05-06 19:55:45 · 1662 阅读 · 0 评论 -
Redis基础 -- 地理坐标类型 Redis GEO 和 Redis GEO的常用命令(含GEOHASH编码说明)
Redis GEO是Redis在3.2版本中新添加的特性,通过这一特性,用户可以将经纬度格式的地理坐标存储到Redis中,并对这些坐标执行距离计算、范围查找等操作。Geohash是一种编码格式,这种格式可以将用户给定的经度和纬度转换成单个Geohash值,也可以根据给定的Geohash值还原出被转换的经度和纬度。执行GEOHASH命令即可取得给定位置的Geohash值。Redis使用有序集合存储GEO数据,一个位置集合实际上就是一个有序集合,因此用户也可以使用有序集合命令处理位置集合。原创 2022-05-05 01:18:18 · 3559 阅读 · 0 评论 -
Redis 基础 -- 位图(bitmap)数据结构和 bitmap的常用命令(SETBIT、GETBIT、BITCOUNT、BITPOS、BITOP、BITFIELD)
Redis的位图(bitmap)是由多个二进制位组成的数组,数组中的每个二进制位都有与之对应的偏移量(也称索引),用户通过这些偏移量可以对位图中指定的一个或多个二进制位进行操作。原创 2022-05-04 15:06:54 · 5141 阅读 · 0 评论 -
Redis 基础 -- HyperLogLog概率算法(计算集合的近似基数)和HyperLogLog的常用命令
HyperLogLog是一个专门为了计算集合的基数而创建的概率算法,对于一个给定的集合,HyperLogLog可以计算出这个集合的近似基数:近似基数并非集合的实际基数,它可能会比实际的基数小一点或者大一点,但是估算基数和实际基数之间的误差会处于一个合理的范围之内,因此那些不需要知道实际基数或者因为条件限制而无法计算出实际基数的程序就可以把这个近似基数当作集合的基数来使用。HyperLogLog的优点在于它计算近似基数所需的内存并不会因为集合的大小而改变。原创 2022-05-04 10:48:32 · 833 阅读 · 0 评论 -
Redis 基础 -- 有序集合 SortedSet类型 和 SortedSet类型的常用命令
Redis的有序集合(SortedSet)同时具有 有序和 集合两种性质,这种数据结构中的每个元素都由一个成员和一个与成员相关联的分值组成,其中成员(value)以字符串方式存储,而分值(score)则以64位双精度浮点数格式存储。原创 2022-05-03 18:23:38 · 3435 阅读 · 0 评论 -
Redis 基础 -- 集合 Set 类型 和 Set 类型的常用命令
文章目录1.集合1.集合Redis的集合(set)键允许用户将任意多个各不相同的元素存储到集合中,这些元素既可以是文本数据,也可以是二进制数据。集合与列表有以下两个明显的区别:列表可以存储重复元素,而集合只会存储非重复元素,尝试将一个已存在的元素添加到集合将被忽略。列表以有序方式存储元素,而集合则以无序方式存储元素。这两个区别带来的差异主要跟命令的复杂度有关:在执行像LINSERT和LREM这样的列表命令时,即使命令只针对单个列表元素,程序有时也不得不遍历整个列表以确定指定的元素是否存在,原创 2022-05-03 11:10:05 · 3257 阅读 · 0 评论 -
Redis 基础 -- 列表 List 类型 和 List 类型的常用命令
Redis的列表(list)是一种线性的有序结构,可以按照元素被推入列表中的顺序来存储元素,这些元素既可以是文字数据,又可以是二进制数据,并且列表中的元素可以重复出现。原创 2022-05-03 00:18:36 · 3020 阅读 · 0 评论 -
Redis 基础 -- 散列 Hash 类型 和 Hash 类型的常用命令
Redis的散列键会将一个键和一个散列在数据库里关联起来,用户可以在散列中为任意多个字段(field)设置值。与字符串键一样,散列的字段和值既可以是文本数据,也可以是二进制数据。通过使用散列键,用户可以把相关联的多项数据存储到同一个散列里面,以便对这些数据进行管理,或者针对它们执行批量操作。原创 2022-05-02 17:07:11 · 950 阅读 · 0 评论 -
Redis 基础 -- 字符串 String 类型 和 String 类型的常用命令
Redis的字符串键可以把单独的一个键和单独的一个值在数据库中关联起来,并且这个键和值既可以存储文字数据,又可以存储二进制数据。SET命令在默认情况下会直接覆盖字符串键已有的值,如果我们只想在键不存在的情况下为它设置值,那么可以使用带有NX选项的SET命令;相反,如果我们只想在键已经存在的情况下为它设置新值,那么可以使用带有XX选项的SET命令。使用MSET、MSETNX以及MGET命令可以有效地减少程序的网络通信次数,从而提升程序的执行效率。Redis用户可以通过制定命名格式来提升原创 2022-05-02 14:27:59 · 1185 阅读 · 0 评论 -
Redis 基础 -- Redis的Java客户端 (Jedis、SpringDataRedis)、两种序列化方式(RedisTemplate、StringRedisTemplate)
Redis的Java客户端 (Jedis、SpringDataRedis)、两种序列化方式(RedisTemplate、StringRedisTemplate)为了节省内存空间,我们并不会使用JSON序列化器来处理value,而是统一使用String序列化器,要求只能存储String类型的key和value。当需要存储Java对象时,手动完成对象的序列化和反序列化。原创 2022-04-30 23:46:14 · 1169 阅读 · 0 评论 -
Redis基础 -- Redis数据结构、Redis通用命令、Redis 的 key 的层次结构、Redis5种数据类型及基本命令(String、List、Hash、Set、SortedSet)
文章目录1. Redis数据结构2. Redis通用命令2.1 KEYS(查看符合模板的所有key )2.2 DEL(删除一个指定的key )2.3 EXISTS(查看指定的key是否存在)2.4 EXPIRE(给一个key设置有效期)2.5 TTL(查看一个key的剩余有效期 )3. String类型3.1 String类型介绍3.2 String类型常用命令3.2.1 SET3.2.2 GET3.2.3 MSET3.2.4 MGET3.2.5 INCR3.2.6 INCRBY3.2.7 INCRBYFL原创 2022-04-29 20:35:48 · 2247 阅读 · 0 评论 -
Redis 基础 -- Redis简介、CentOS 7 单机安装Redis、启动Redis(后台启动Redis 指定配置文件启动Redis 开机自启Redis )、Redis客户端(含图形化界面)
1. Redis简介Redis是一个速度非常快的非关系数据库(non-relational database),它可以存储键(key)与5种不同类型的值(value)之间的映射(mapping),可以将存储在内存的键值对数据持久化到硬盘,可以使用复制特性来扩展读性能,还可以使用客户端分片来扩展写性能。Redis与其他数据库和软件的对比:如果你熟悉关系数据库,那么你肯定写过用来关联两个表的数据的SQL查询。而Redis则属于人们常说的NoSQL数据库或者非关系数据库:Redis不使用表,它的数据库也原创 2022-04-29 09:13:47 · 794 阅读 · 0 评论