Redis从入门到精通
文章平均质量分 69
Redis生产实践总结,学习Redis从入门到精通。
ThatMonth
星光不问赶路人,时光不负有心人。
展开
-
Redis教程(二十三):Redis的底层数据结构
Redis是一种高性能的key-value数据库,广泛用于缓存、消息队列、应用程序会话管理等领域。它之所以能提供高效的数据操作性能,很大程度上归功于其底层使用了多种优化过的数据结构来存储数据。原创 2024-07-09 17:14:48 · 1465 阅读 · 0 评论 -
“用户名或密码不正确“,困扰我几天的登录问题终于解决了
在一个平平无奇的下午,我像往常一样用admin登录系统的时候,突然报错"用户名或密码不正确"原创 2023-07-26 15:16:40 · 1077 阅读 · 0 评论 -
Redis教程(十一):Redis的发布订阅和事件监听功能
Redis的发布/订阅(Pub/Sub)功能是一种消息传递模式,用于实现消息发布者(publisher)和订阅者(subscriber)之间的消息通信。在这种模式下,消息的发送者(发布者)将消息发送到特定的频道(channel),而订阅了该频道的接收者(订阅者)将会接收到这些消息。发布者负责向指定的频道发布消息。发布者将消息发送到指定的频道后,所有订阅了该频道的订阅者都会接收到这些消息。频道是消息的传输通道,它用于将消息从发布者传递给订阅者。原创 2024-02-27 09:41:43 · 471 阅读 · 0 评论 -
Redis教程(八):Redis中zSet类型的常用命令
查询zSet中所有的值,第一个参数为0代表从小到大排序,为1代表从大到小排序,-1表示所有数据。往zSet有序集合中添加数据,1,2,3代表权重,one,two,three代表数据。将zset的值根据key来从小到大排序并输出,-inf 负无穷 +inf 正无穷。只查询score原创 2024-05-15 15:55:25 · 474 阅读 · 0 评论 -
Redis教程(五):Redis中数字操作常用命令
指定key为‘num’的数据自减1,可以减为负数。指定key为‘num’的数据自增10。指定key为‘num’的数据自增1。指定key为‘num’的数据自减3。给key为‘num’插入数字0。原创 2024-05-15 15:48:58 · 208 阅读 · 0 评论 -
Redis教程(九):Redis中Hash类型的常用命令
往Hash中添加两个数据,如果没有,自动创建一个Hash结构。删除指定hash中的key,可多个,key删除后对应的value也会被删除。hash中添加key不存在则新增,存在则不新增,添加成功返回1,失败返回0。获取hash中的指定key,获取hash中key是name的值。判断key是否存在于指定的hash,存在返回1,不存在返回0。获取hash中所有的值,包含key。获取指定hash中的所有value。获取指定hash的key的个数。获取指定hash中的所有key。原创 2024-05-15 15:56:59 · 266 阅读 · 0 评论 -
Redis教程(七):Redis中Set类型的常用命令
移动指定set中的指定元素到新的set中,myset减少一个元素apple,myset2增加一个元素apple。往Set集合中添加元素,自动创建一个集合myset,添加了四个元素。取差集,查询指定的set之间的差集,可以是多个set。取交集,查询指定的set之间的交集,可以是多个set。取并集,查询指定的set之间的并集,可以是多个set。判断某个值在不在set中,存在返回1,不存在返回0。随机抽取Set中的元素,随机抽取1个。随机抽取Set中的元素,随机抽取3个。随机删除Set中的元素,随机删除2个。原创 2024-05-15 15:54:08 · 265 阅读 · 0 评论 -
Redis教程(六):Redis中List类型的常用命令
更新指定下标的元素,更新list集合中下标为‘1’的元素为‘newV5’,如果指定的‘集合’不存在,报错,如果集合存在,但是指定的‘下标’不存在,也会报错。移除集合list中的元素是v3的元素3个,如果实际中集合元素数量不达标,不会报错,返回移除成功的数量。在指定元素后面插入一个元素,在集合中的v3元素之后加上一个元素newv3。在指定元素前面插入一个元素,在集合中的v3元素之前加上一个元素newv3。查询list的指定范围元素,从下标0开始,1结束,两个元素。查询list的指定下标元素。原创 2024-05-15 15:52:02 · 233 阅读 · 0 评论 -
Redis教程(二):Redis在Linux环境下的安装
修改配置文件,redis配置文件在 /opt/soft/redis/redis-6.2.14/redis.conf,把daemonize yes改成daemonize no。,Redis默认安装在了 /usr/local/bin 目录下。上传到Linux的/opt/soft目录,使用以下命令解压。查看当前gcc的版本,7.3.1即代表环境升级成功。升级gcc的版本,中途遇到输入时直接选择yes。Linux安装基本环境gcc,安装命令。下载得到一个 tar.gz 压缩文件。启动客户端连接,测试连接是否正常。原创 2024-05-15 15:41:27 · 276 阅读 · 0 评论 -
Redis教程(三):Redis的五种基本数据类型
有序集合zSet,也叫sorted set,sorted set 增加了一个权重参数 score,使得集合中的元素能够按 score 进行有序排列,还可以通过 score 的范围来获取元素的列表。类似于Java的TreeSet和HashMap的结合体。哈希Hash结构相当于Java语言的HashMap,内部实现结构上与JDK1.7的HashMap一致,底层通过数据+链表实现。集合Set相当于Java的HashSet,Redis 中的 set 类型是一种无序集合,集合中的元素没有先后顺序。原创 2024-05-15 15:43:44 · 242 阅读 · 1 评论 -
Redis教程(一):Redis在Windows环境下的安装
修改配置文件 redis.windows-service.conf,可以配置端口、密码、修改访问IP权限。启动服务端,启动 redis-server.exe文件。启动客户端,启动 redis-cli.exe文件。下载ZIP文件,解压到本地。原创 2024-05-15 15:38:13 · 287 阅读 · 0 评论 -
Redis教程(二十二):Redis的过期删除和缓存淘汰策略
Redis 中的过期删除策略是与 Redis 管理键的生命周期相关的一系列操作,用于删除过期的Key以释放内存。Redis 默认会每秒进行十次过期扫描,过期扫描不会遍历过期字典中所有的 key,而是采用了一种简单的贪心策略。于此同时为了保证过期扫描不会出现循环过度,导致线程卡死现象,算法还增加了扫描时间的上限,默认不会超过 25ms。工作原理:当设置键的过期时间时,Redis 会创建一个定时任务,在键到期时立即删除该键。缺点:如果有很多过期的键从不被访问,它们将不会被自动删除,从而可能会占用大量的内存。原创 2024-06-05 15:39:51 · 1233 阅读 · 0 评论 -
Redis教程(二十一):Redis怎么保证缓存一致性
Redis 的缓存一致性是指在使用 Redis 作为缓存层时,保证缓存中的数据与数据库中的数据保持一致的状态。在分布式系统中,数据一致性是一个重要的问题,因为可能存在多个客户端同时读写同一数据,或者数据在不同节点间需要同步更新。:当数据库中的数据被修改后,相关联的缓存数据需要被相应地更新或失效,以避免返回陈旧的数据。:当缓存的数据被认定为过时(可以是时间过期,或者因为底层数据有变更)时,必须从缓存中移除,以确保下次读取会从后端数据库加载最新数据。:在分布式缓存环境中,相同的数据可能会存储在多个缓存节点上。原创 2024-05-29 07:57:09 · 1084 阅读 · 0 评论 -
Redis教程(二十):Redis中Lua脚本的使用
Lua 脚本主要在于提供一种强大且灵活的方式来扩展和定制应用程序的功能。原创 2024-05-27 16:56:55 · 246 阅读 · 0 评论 -
Redis教程(十九):Redis的Redisson布隆过滤器
布隆过滤器(Bloom Filter)是一种空间效率极高的概率型数据结构,用于快速检测一个元素是否存在于一个集合中。由于其独特的特性,布隆过滤器可以在需要节省空间且可以接受一定误判率的场合下,非常有效地使用。原创 2024-05-27 14:54:47 · 564 阅读 · 0 评论 -
Redis教程(十八):Redis的Redisson的看门狗机制
Redisson的看门狗机制主要是指客户端在获取到锁之后,通过后台线程或定时任务自动续期的功能,以避免在锁持有期间因为处理时间过长而导致锁自动释放,进而确保操作的安全性与原子性。需要注意的是,虽然看门狗机制提升了Redis分布式锁的易用性和安全性,但也增加了系统的复杂性,例如需要考虑看门狗的执行频率、续期阈值和锁的最大生存时间等。另外,实现这一机制通常依赖于客户端库的支持(如Redisson),直接在应用代码中实现可能比较复杂。原创 2024-05-27 10:16:21 · 605 阅读 · 0 评论 -
Redis教程(十七):Redis的Redisson分布式锁
Redis分布式锁的主要作用是在分布式系统环境下提供一种机制,用于确保在同一时间只有一个进程(或线程)能够执行某个关键代码段或访问特定的资源。这主要用于控制对共享资源的并发访问,以避免因多个进程同时修改同一数据而导致的数据不一致或其他竞争条件问题。互斥访问(Mutual Exclusion): 确保在任何时刻,只有一个客户端能持有锁。这就像是一个全局的互斥量(mutex),所有客户端都遵守这个约定。原创 2024-05-27 09:35:51 · 596 阅读 · 0 评论 -
Redis教程(十六):Redis的缓存穿透、缓存击穿、缓存雪崩
用户需要查询一个数据,例如要查一张ASSET_CODE = '999999'的卡片,查询redis中没有,就直接去请求数据库,数据库中也不存在对应的数据,返回空或错误,当很多用户同时请求并且都没有命中!于是都去请求了持久层的数据库,那么这样会给持久层数据库带来非常大的压力。当高并发或有人利用不存在的Key频繁攻击时,数据库的压力骤增,甚至崩溃,这就是问题。原创 2024-05-22 17:51:17 · 526 阅读 · 0 评论 -
Redis教程(四):Redis中String类型的常用命令
如果key为'name'的数据不存在,则插入一个key为'name',值为'apple'的数据,已存在则不插入。截取字符串,相当于java中的subString,返回下标从0开始,到4结束的字符串,不会改变原有数据。追加到key为‘name1’的数据后,并返回字符串总长度,如果key为‘name1’不存在,则新增。查看key为‘name’的key的过期时间,返回为-2时证明该key已过期,即不存在。插入一个key为'name',值为'apple'的数据,过期时间为15秒。获取key为'name'的数据。原创 2024-05-15 15:47:19 · 325 阅读 · 0 评论 -
Redis教程(十五):Redis的哨兵模式搭建
分别复制三份Redis工作文件夹,里面内容一致接着修改7002的配置文件,【redis.windows-service.conf】port 7002改成7003也同样修改这样就指定了7001为主机,7002、7003为从机。原创 2024-05-21 10:25:11 · 665 阅读 · 0 评论 -
Redis教程(十四):Redis的三主三从集群搭建
Redis的集群是一种允许多个Redis节点在网络上互联并协作的技术,它为处理大规模数据提供了更高的性能和可扩展性,同时具有数据高可用性和故障容忍性。在Redis集群中,数据会被分成多个部分,每个部分在不同的Redis节点上进行存储。这就是所谓的数据分片或分区。分片可以有效地分散存储和处理的负载,并且可以在新增节点时进行动态地、无中断地数据重新分片。Redis集群具有很高的可用性,因为每个节点都可以有零个或多个从节点。原创 2024-05-20 16:37:15 · 1171 阅读 · 0 评论 -
Redis教程(十三):Redis的主从复制模式搭建
Redis的主从复制模式是一种常用的数据复制和备份机制,其核心目的是将一台Redis服务器(称为“主”服务器)的数据复制到一个或多个Redis服务器(称为“从”服务器)。这种机制提供了数据的高可用性、负载均衡和故障恢复解决方案。在Redis的主从复制模式中,数据的读写操作主要在主服务器上执行,而从服务器主要用于读操作和备份,以此来分担主服务器的读负载压力并提供数据的高可用性。原创 2024-05-20 16:14:49 · 840 阅读 · 1 评论 -
Redis教程(十二):Redis的持久化RDB和AOF
因为RDB文件只用作后备用途,建议只在Slave上持久化RDB文件,而且只要15分钟备份一次就够了,只保留 save 900 1 这条规则。如果Enable AOF ,好处是在最恶劣情况下也只会丢失不超过两秒数据,启动脚本较简单只load自己的AOF文件就可以了,代价一是带来了持续的IO,二是AOF rewrite 的最后将 rewrite 过程中产生的新数据写到新文件造成的阻塞几乎是不可避免的。原创 2024-05-20 11:06:43 · 828 阅读 · 0 评论 -
Redis教程(十):Redis中三种特殊数据类型命令
Bitmap指的是位存储,操作二进制位来进行记录,就只有0 和 1 两个状态,可能需要我们统计用户的登陆信息,员工的打卡信息等等。Hyperloglog指的是基数,两个数据集中不重复的元素,在Redis中,会有一定的误差性。,占用的内存是固定的,2^64个元素,相当于只需要12kb的内存即可。Geospatial是地理位置类型,我们可以用来查询附近的人、计算两人之间的距离等。查找指定元素指定范围内的元素:查询南京 500公里范围有哪些城市。的,我们都可以用Bitmap来进行操作。原创 2024-05-20 10:39:16 · 339 阅读 · 0 评论 -
Redis教程汇总篇,让你从入门到精通
Redis 是一个开源的、内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。它支持多种类型的数据结构,如字符串(strings)、散列(hashes)、列表(lists)、集合(sets)、有序集合(sorted sets)以及更复杂的数据结构,如位图(bitmaps)、超日志(hyperloglogs)和地理空间索引(geospatial indexes)。:即使Redis是一个内存数据库,它也支持两种持久化机制(RDB快照和AOF日志),可以将内存中的数据保存到磁盘,这保证了数据的安全性。原创 2024-05-15 16:23:49 · 1494 阅读 · 0 评论 -
Java项目使用pop命令报错 ERR wrong number of arguments for ‘spop‘ command的解决办法
在我们的Spring+Redis的项目中可能会遇到这种错误:导致这种问题的表象是我们代码中使用了Redis的pop命令。原创 2024-03-06 11:19:27 · 646 阅读 · 0 评论 -
Redis报错NOAUTH Authentication required怎么解决?
在使用redis-cli时,可能会遇到报错。原创 2024-03-06 10:43:41 · 1625 阅读 · 0 评论 -
SpringBoot整合Redis以及自定义序列化
springboot-redis原创 2022-06-13 14:02:30 · 910 阅读 · 0 评论