Redis文库
文章平均质量分 88
Redis系列博客
smileNicky
优秀
展开
-
Redis系列之底层数据结构SDS
SDS:Simple Dynamic String,翻译为简单动态字符串。SDS是一种用于存储二进制数据的数据结构,具有动态扩容的特点,代码位于src/sds.h和src/sds.c原创 2024-09-13 17:56:27 · 807 阅读 · 0 评论 -
Redis系列之淘汰策略介绍
Redis系列之淘汰策略介绍。由于Redis内存是有大小的,当内存快满的时候,又没有过期数据,这个时候就会导致内存被占满,内存满了,自然就不能再放入新的数据。所以,就需要Redis的淘汰策略来保证可用性。原创 2024-06-06 16:15:47 · 1003 阅读 · 1 评论 -
Redis系列之key过期策略介绍
我们知道redis有一个特性,redis中的数据,我们都是可以设置过期时间的,如果时间到了,这个数据就会从Redis中移除。那么redis key的过期策略就是我们怎么将redis中的过期数据移除。原创 2024-05-07 11:14:27 · 713 阅读 · 0 评论 -
Redis系列之Cluster集群搭建
在上一篇博客,我们学习Redis哨兵Sentinel集群的搭建,redis的哨兵模式提供了比如监控、自动故障转移等高可用方案,但是这种方案,容量相对固定,要进行持续扩容或者数据分片就不适合,所以有另外一种更复杂的集群方案,Cluster集群模式原创 2024-04-20 21:46:28 · 1038 阅读 · 0 评论 -
Redis系列之哨兵Sentinel集群搭建
在上一篇博客,我们已经知道怎么搭建一个redis主从复制集群,但是主从集群如果出现服务器宕机的情况,是不会自动选举master的,所以需要搭建更加高可用的集群模式,哨兵模式,哨兵集群会自动监控,如果出现master服务器宕机的情况,会重新选举新的master,保证系统的高可用原创 2024-04-20 21:46:12 · 589 阅读 · 1 评论 -
Redis系列之持久化机制RDB和AOF
RDB,Redis Database快照,是Redis默认的持久化方案。当满足一定条件的时候,会把当前内存中的数据写到磁盘,生成一个快照文件,默认的文件名为`dump.rdb`AOF:Append Only File,顾名思义,就是一种追加文件的意思,工作机制比较好理解,redis会将每一个收到的写命令通过write函数追加到文件中,通俗理解就是日志记录AOF机制默认是关闭的,你可以在配置文件中开启,找到redis.conf。原创 2024-03-08 23:34:02 · 776 阅读 · 2 评论 -
Redis系列之事务机制
学习mysql数据库的时候,我们知道了事务的ACID特性,Redis也是支持事务的,不过和数据库的事务又有什么区别?在mysql数据库中,我们使用begin开启事务,提交是commit,回滚是rollback,然后Redis中的事务是怎么一回事?redis的事务其实可以看做是一组命令按照顺序,串行执行队列中的命令,其它客户端的命令不会写入到这个队列中。总的来说,redis事务就是一次性、顺序性、排他性的执行一个队列中的一组命令。原创 2023-12-17 21:49:55 · 304 阅读 · 0 评论 -
Redis系列之简单实现watchDog自动续期机制
在分布锁的实际使用中,可能会遇到一种情况,一个业务执行时间很长,已经超过redis加锁的时间,也就是锁已经释放了,但是业务还没执行完成,这时候其它线程还是可以获取锁,那就没保证线程安全。具体的实现,主要是基于一个定时任务,时间间隔一定要比加锁时间少一点,这里暂时少1s,加上一个lua脚本进行检测,检测不到数据,就关了定时任务原创 2023-12-12 20:23:14 · 1540 阅读 · 0 评论 -
Redis系列之实现分布式自增主键
使用Redis来实现分布式的主键自增主要是依赖于Redis的INCR命令,调用INCR命令的对应key,其数值是实现递增加一,所以利用这个性质,将redis独立部署起来就可以实现分布式环境的自增ID,如图,使用INCR命令的例子原创 2023-11-09 19:19:37 · 922 阅读 · 0 评论 -
Redis系列之多线程下使用incr/decr命令
Redis是一个单线程的服务,所以正常来说redis的命令是会排队执行的。incr/decr命令是redis提供的可以实现递增递减的命令。但是如果使用不当也会有线程安全问题。动手实践一下吧,用一个例子来模拟实现高并发场景的秒杀减库存业务。原创 2023-12-04 20:15:00 · 2194 阅读 · 3 评论 -
Redis系列之keys命令和scan命令性能对比
Redis的keys *命令在生产环境是慎用的,特别是一些并发量很大的项目,原因是Redis是单线程的,keys *会引发Redis锁,占用reids CPU,如果key数量很大而且并发是比较大的情况,效率是很慢的,很有可能导致服务雪崩,在Redis官方的文档是这样解释的,官方的推荐是使用scan命令或者集合原创 2023-12-05 00:01:13 · 1085 阅读 · 0 评论 -
Redis系列之常见数据类型应用场景
Redis支持多种数据类型,比如String、hash、list、Set、SortedSet、Streams、Bitmap、Hyperloglog、Geo(物理位置)等等,在官网也给出了说明,本博客就挑一些比较常有的数据类型说说,本文例子基于Redisson实现原创 2023-11-08 22:36:45 · 574 阅读 · 0 评论 -
Redis系列之什么是布隆过滤器?
Redis系列之什么是布隆过滤器?布隆过滤器(Bloom Filter)是1970年由布隆提出的。它实际上是一个很长的二进制数组。布隆过滤器有一系列随机映射函数,可以用于检索一个元素是否在一个集合中。......原创 2022-07-24 21:29:54 · 1117 阅读 · 0 评论 -
Redis系列之HyperLogLog用法简介
(1)HyperLogLog简介在Redis 在 2.8.9 版本才添加了 HyperLogLog,HyperLogLog算法是用于基数统计的算法,每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近 2^64 个不同元素的基数。HyperLogLog适用于大数据量的统计,因为成本相对来说是更低的,最多也就占用12kb内存业务场景,HyperLogLog常用于大数据量的...原创 2019-07-17 22:01:16 · 2821 阅读 · 0 评论 -
Redis系列之位图简介
本博客介绍Redis的位图原创 2019-03-02 23:36:59 · 4324 阅读 · 0 评论 -
Redis系列之延时队列简介
文章目录一、业务场景1.1 实践场景1.2 实现方式二、Redis延时队列2.1 Redis列表实现2.2 Redis集合实现一、业务场景所谓延时队列就是延时的消息队列,下面说一下一些业务场景比较好理解1.1 实践场景订单支付失败,每隔一段时间提醒用户用户并发量的情况,可以延时2分钟给用户发短信…1.2 实现方式这些情况都可以使用延时队列来做,实现延时队列比较场景的有使用消息队...原创 2019-03-01 00:07:23 · 4152 阅读 · 0 评论 -
Redis系列之分布式锁简介
文章目录一、加锁原因1.1 加锁方式1.2 业务场景二、原子操作原子操作定义2.1 context switch三、分布式锁3.1 实现方式四、分布式锁常见问题4.1 超时问题4.2 集群环境一、加锁原因在一些比较高并发的业务场景,经常听到通过加锁的方法实现线程安全。下面简单介绍一下1.1 加锁方式数据库锁数据库本身提供了锁机制,比如乐观锁、悲观锁等等。下面给出我之前写的一篇博客,介绍...原创 2018-12-10 00:01:35 · 5093 阅读 · 5 评论 -
Redis系列之基本数据结构简介
Redis基础数据结构Redis有5种基本数据结构:String(字符串)、list(列表)、set(集合)、hash(哈希)、zset(有序集合)字符串string字符串类型是Redis的value最简单的数据结构,类似与Java语言中的ArrayList(数字列表),不过在Redis里String是一种动态字符串Redis里的String采用预分配冗余空间的方法set & ...原创 2018-09-26 22:47:48 · 5088 阅读 · 0 评论