
redis学习
文章平均质量分 79
寿命齿轮
随便写写咯
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Redis实践:抢红包
抢红包:使用list的lpop获得一个金额,记录到hash中使用user为key,金额为value;如果list为空,说明已经抢完;如果hash中已有对应key,说明已经抢过。发红包:一个红包一个uuid,使用list提前记录分红包时每个红包的大小,红包大小为(剩余金额/剩余人数)*Ran(0,2);过期则对list设置expire。可适当在controller中补充记录数据库的内容。异常情况1:已经抢过了。异常情况2:已经抢完了。原创 2023-09-21 13:34:53 · 236 阅读 · 0 评论 -
Redis的stringRedisTemplate执行lua脚本报错 io.lettuce.core.output.ValueOutput does not support set(long)解决
解决StringRedisTemplate.execute报错io.lettuce.core.output.ValueOutput does not support set(long)和class java.lang.XXX cannot be cast to class java.lang.String问题原创 2023-09-21 13:12:03 · 3698 阅读 · 1 评论 -
Redis:常用数据类型的底层数据结构(略讲)
本文将介绍Redis源码中常用的五种数据类型(字符串、集合、列表、有序集合和哈希)的实现方法。原创 2023-09-16 20:37:30 · 612 阅读 · 0 评论 -
Redis:过期键删除策略+内存淘汰策略
本文将讲解redis的内存配置、过期键删除策略和缓存淘汰策略。原创 2023-09-13 22:37:14 · 123 阅读 · 0 评论 -
Redis:Redlock思路
本文将介绍Redis分布锁的Redlock红锁算法思路和在Redisson中的对应实现。原创 2023-09-13 11:13:13 · 142 阅读 · 0 评论 -
Redis:手写分布式锁
本文将在RedisTemplate中使用Redis的String类型或Hash类型来迭代式实现一个分布式锁的基本功能(互斥、防误删)和附加功能(可重入、自动续期)。原创 2023-09-12 16:14:11 · 265 阅读 · 0 评论 -
Redis:Lua脚本
如何在Redis-cli和RedisTemplate中使用Lua脚本,以及Lua脚本的部分语法知识。原创 2023-09-11 20:19:12 · 301 阅读 · 0 评论 -
Redis:缓存预热、缓存雪崩、缓存穿透、缓存击穿
本文将讲述缓存预热、缓存雪崩、缓存穿透、缓存击穿对应的概念和应对措施,并使用代码演示部分应对措施,如Google布隆过滤器、分页显示+定时更新的应用场景下的技术方案。原创 2023-09-10 20:12:23 · 258 阅读 · 0 评论 -
Redis:bitmap+布隆过滤器
本文将讲解https://img-blog.csdnimg.cn/a47855c6b527431888ddc9f952c00fde.pngbitmap的概念、命令、应用场景,布隆过滤器的概念和使用bitmap实现布隆过滤器。原创 2023-09-09 14:07:46 · 1153 阅读 · 0 评论 -
Redis:GEO应用
本文介绍了Redis数据类型GEO的相关概念、命令、推荐使用场景和应用代码举例。原创 2023-09-05 21:41:55 · 222 阅读 · 0 评论 -
Redis:HyperLogLog应用
本文将先讲解亿级数据的常用统计策略,然后介绍HyperLogLog的相关概念和命令,最后使用应用代码举例讲解。原创 2023-09-05 17:34:23 · 319 阅读 · 1 评论 -
Redis:中间件Canal
canal主要用于MySQL 数据库增量日志数据的订阅、消费和解析,具有构建数据库镜像、实时备份数据库、索引构建和实时维护、业务cache刷新等功能。本文中将使用canal来实现将数据库改动同步到redis,整篇包含canal构建、canal工作原理讲解、canal使用方面的内容。原创 2023-09-04 17:42:57 · 387 阅读 · 1 评论 -
Redis:双写一致性
如果同时使用redis和mysql,就无法回避redis与mysql数据不一致的问题。应用程序在使用数据时,通常仅使用增删改查操作,增、删、改可以一致归类为写,查就是读。在单线程或低并发的情况下,这两类操作都没什么问题,但是在高并发的环境下,就会出现。原创 2023-09-03 23:10:22 · 307 阅读 · 0 评论 -
Redis:BigKey处理
morekey场景下造成问题的通常是时间复杂度为O(n)的操作,比如keys *遍历整个数据库,会导致redis服务器几秒钟内无法提供服务,进而发生缓存雪崩问题,导致MySQL数据库崩溃。获得一个key的大小,在脚本中可以配合遍历使用来统计哪些key大于10KB。原创 2023-09-03 19:30:50 · 247 阅读 · 0 评论 -
Redis:单线程和多线程
有多个redis客户端时,也是这个流程,单线程redis使用I/O多路复用技术对多个socket描述符进行监听,每当有请求来时就让主线程进行处理;的循环中,而不会由于socket堵塞导致redis处在等待I/O的状态中(要等待socket传输完成后才触发事件),相比IO阻塞模型,这大大减少了IO阻塞时间,因此流程自然很快。这样redis就抛弃了I/O多路复用模型,而是使用多线程模型解决网络IO问题,同时又使用单线程处理命令,保证了线程安全和高性能。原创 2023-09-03 12:32:44 · 170 阅读 · 0 评论 -
Redis多机部署集群cluster
虽然sentinel已经在replica基础上改进了许多,但是其仍然存在一个巨大问题,就是单个Master往往难以承担大量数据的写入,这就需要多个Master共同协调,由此引出了redis的cluster集群部署。cluster使用了分片的方式,对原先集中在一个Master中的数据进行拆分(hash+整除),分片后存储到多台机器,以此降低单个Master的压力。图示:同时,每个Master可以有多个slave,以此就能支持海量数据的读写。原创 2023-09-01 01:05:12 · 546 阅读 · 1 评论 -
Redis多机部署哨兵sentinel
哨兵sentinel是对于复制replica的升级,相较于replica中master宕机后整个redis服务就不可用的巨大缺陷,哨兵引入了吹哨人机制来使slave可以自动成为master,以此解决原先master必须手动更换的问题。此外,还有一点改进之处是,哨兵可充当配置中心,客户端可连接哨兵来获得当前Redis的服务节点地址。原创 2023-08-31 21:37:39 · 304 阅读 · 0 评论 -
Redis多机部署复制replica
redis多机部署的一种形式,通过读写分离来降低服务器的工作负载。master接收写请求(特殊情况同样可接收读请求)将新数据异步同步到slave数据库slave接收读请求。原创 2023-08-31 16:53:39 · 114 阅读 · 0 评论 -
Redis发布订阅
发布订阅可以理解为是一种轻量的队列,只不过数据不会被持久化。原创 2023-08-31 14:36:53 · 65 阅读 · 0 评论 -
Redis管道
管道(pipeline)可以一次性发送多条命令给服务端,服务端依次处理完完毕后,通过一条响应一次性将结果返回,通过减少客户端与redis的通信次数来实现降低往返延时时间。使用linux系统的数据流重定向,对redis-cli -a $password --pipe进行输入即可。也可以使用文件,如cat XXX.txt | redis-cli -a $password --pipe等。注意,pipe中部分指令如果存在异常,是不会影响其他指令执行的。原创 2023-08-31 13:26:05 · 76 阅读 · 0 评论 -
Redis事务
Redis的事务概念和数据库系统的事务概念相差很大,数据库的事务是用于并发控制和恢复的,而Redis的事务只是单纯的一组串行命令的集合,一次、顺序、排他地执行一系列命令,仅在并发控制中使用。原创 2023-08-31 11:44:30 · 73 阅读 · 0 评论 -
Redis持久化
Redis的两种持久化方式图示:后续内容适用于redis7。原创 2023-08-31 11:06:12 · 89 阅读 · 0 评论 -
Redis特殊数据结构
因为原先的Redis发布订阅机制无法进行持久化,网络波动都会导致消息丢弃,也没有ACK回应机制来确保收到,而且当发送消息时如果没有消费者,就会直接丢弃消息。用于统计去重数量,如UV(unique visitor,独立访客)、搜索某个关键词的用户数量、某个用户每天搜索几个关键词等。用于存储地理位置,在对各个位置进行记录后,可方便地进行距离计算、指定中心和半径获得其中所有位置元素等。即bit数组,可以以较小的空间存储二进制数据,如签到统计等。较常用的特殊数据结构,可用于充当消息中间件和阻塞队列。原创 2023-08-30 22:04:56 · 80 阅读 · 1 评论 -
Redis常见数据结构
如购物车:key为购物车+用户id,value中field存储商品编号,value中存储购买数量;使用hincrby进行数量更改,使用hlen进行总数统计,使用hgetall获得所有数据。最基本的数据结构,就是key-value,二进制安全,可以包含任何数据(如png图片),一个value最大可达512MB。接受消息,使用list存储消息,然后再使用lrange显示。统计人员,如小程序抽奖,从集合中随机展现一些用户。原创 2023-08-30 22:02:23 · 76 阅读 · 1 评论 -
Redis认识
Redis:Remote Dictionary Server,远程字典服务器,是一个高性能的Key-Value数据库,数据存储在内存中,同时支持事务、持久化、LUA脚本、发布/订阅、缓存淘汰、流技术等多种功能特性,有主从模式、Redis Sentinel和Redis Cluster集群架构方案。Redis的功能极多,这里就不做展开介绍了。原创 2023-08-30 22:00:21 · 80 阅读 · 2 评论