Redis
文章平均质量分 74
WannaRunning
这个作者很懒,什么都没留下…
展开
-
RedisTemplate工具篇-zset类型查询操作
目录使用索引下标获取zset元素使用分数查询获取zset元素zset类型介绍:zset每个字符串元素都关联一个score浮动数值,通过zadd命令放进去的每一个元素都会按score数值进行排序使用索引下标获取zset元素zset结构中的数据是有序的,如果我们的需求是获取第一个,最后一个,前几个,后几个这种,可以使用按索引查询的API方法。ZSetOperations接口的rangeWithScores方法Set<ZSetOperations.TypedTuple<S原创 2021-08-26 13:35:49 · 7080 阅读 · 1 评论 -
RedisTemplate工具篇-Hash类型数据操作
目录获取全部的Entry1.entries方法2.Scan接口迭代遍历获取全部的hashKey获取全部的hashValue获取全部的Entry使用RedisTemplate进行hash类型操作,要获取全部数据有两种方式。1.entries方法使用BoundHashOperations或HashOperations接口的entries方法,返回值是全部的hashKey和Value的map集合。Map<String,Object> hashEntry = r原创 2021-08-18 15:59:23 · 672 阅读 · 0 评论 -
RedisTemplate工具篇-lua脚本操作
目录lua脚本的构建lua脚本的执行方式在RedisTemplate中使用lua脚本脚本预加载基于上一篇文章对redis中lua脚本的介绍,Redis 中 有两种运行Lua的方法直接发送Lua到redis服务器中执行。 先将Lua发送给redis,redis会对Lua脚本缓存,然后返回一个SHA1的32位编码,之后只要发送SHA1和相关参数 给redis 就可执行, 这样可以提高执行速度。lua脚本的构建spring 提供了 RedisScript 接口,与此...原创 2021-06-29 09:12:50 · 510 阅读 · 0 评论 -
Redis原生命令-lua脚本的使用
目录脚本编写执行脚本调试Debug模式cluster集群中使用lua操作多个key使用场景:单个命令不能完成、需要多个命令,但又要保证原子性的redis操作。redis自2.6.0版本加入了执行 lua 脚本相关的命令,例如EVAL、EVALSHA、SCRIPT EXISTS、SCRIPT FLUSH、SCRIPT KILL、SCRIPT LOAD3.2.0版本后有加入了 lua 脚本的调试功能和命令SCRIPT DEBUGEVAL :执行一段lua脚本,每次都需要将完原创 2021-06-24 13:32:47 · 295 阅读 · 0 评论 -
Redis实现延迟队列
使用一个单线程的线程池执行消费者逻辑,消费者通过while循环+线程wait实现延迟任务的处理逻辑。实现上重点在于延迟处理的实现对指定的队列中的消息进行从小到大排序,然后获取当前队列中最近一条(排序后取第一个)未消费的延迟消息。 使用消息的排序字段score做判断如果score<=当前时间,使用lua脚本修改延时任务job,删除当前的延时消息,添加该消息的重试信息,然后调用自定义的对应队列的消费者的方法处理延迟消息。如果判断不满足条件,使用对象的wait()方法使线程阻塞等待 scor原创 2021-08-10 18:54:43 · 192 阅读 · 0 评论 -
Redis中的事务功能
目录Redis事务Redis事务于关系型数据库事务的差别Redis事务和PipeLine的区别Spring项目中使用Redis事务配置RedisTemplate的事务支持使用Spring事务管理Redis操作(使用@Transactional注解)不使用Spring事务管理,使用Redis事务命令控制实现Redis事务Redis事务先贴一张网上找来的图,了解一下Redis原生命令时如何实现事务功能的。事务功能涉及到的相关命令如下MULTI:标记事务的开始,其后.原创 2021-08-11 23:43:21 · 148 阅读 · 0 评论 -
浅谈基于Redis存储的SpringSession方案的实现原理
很早之前写过关于分布式集群下session的管理实现,其中有关于spring-session的实现方式。其实使用了这种方式实际上是把httpsession交给spring管理,spring管理session的实现则是把session集成到了redis等中间件中去,从而实现分布式共享的目的。@EnableRedisHttpSession注解关键就在于这个注解,这个注解沿用了spring系列开关注解的思路,通过@Import注解导入了SpringSession的核心配置类RedisHttpSession原创 2021-08-12 20:57:45 · 1763 阅读 · 0 评论 -
Redis中JAVA对象存储方式选择——String和Hash
目录方式一:String类型存储方式二:Hash类型存储两种方式的性能测试两种方式的使用场景方式一:String类型存储把对象序列化或JSON化后,以String类型存储。优点:存操作,整体取值操作方便。缺点:更新时只能对整个对象进行更新,效率差。DevUser devUser=new DevUser();devUser.setId("1111111111111");devUser.setUserName("userName");String userString原创 2021-03-17 13:08:39 · 422 阅读 · 0 评论 -
Redis过期数据处理删除策略和内存淘汰策略
目录Redis 对过期数据的处理惰性删除定期删除Redis内存淘汰策略Redis 对过期数据的处理在 redis 中,对于已经过期的数据,Redis 采用两种策略来处理这些数据,分别是惰性删除和定期删除惰性删除惰性删除不会去主动删除数据,而是在访问数据的时候,再检查当前键值是否过期,如果过期则执行删除并返回 null 给客户端,如果没有过期则返回正常信息给客户端。它的优点是简单,不需要对过期的数据做额外的处理,只有在每次访问的时候才会检查键值是否过期,缺点是删除过期.原创 2021-02-28 22:41:34 · 139 阅读 · 0 评论 -
Redis运维相关操作和参数解读
info stats此命令可以查看redis相关指标,如fork操作耗时等。在Cluster集群中是 info命令序号 配置名 配置说明 关系 阈值 1 aof_current_size aof当前尺寸(单位:MB) 大于 6000 2 aof_delayed_fsync 分钟aof阻塞个数 大于 3 3 client_biggest_input _buf 输入缓冲区最大buffer大小(单位:MB)原创 2021-02-28 21:10:43 · 134 阅读 · 0 评论 -
分布式缓存的相关解决方案——缓存击穿和缓存穿透等
缓存击穿有时候如果网站并发访问高,一个缓存如果失效,可能出现多个进程同时查询DB,同时设置缓存的情况,如果并发确实很大,这也可能造成DB压力过大,还有缓存频繁更新的问题。双重校验防止缓存击穿:List<Map> userinfo = (List<Map> ) redisTemplate.opsForValue().get("userInfo"); //双重校验防止缓存击穿 if(userinfo==null){ synchronized (thi原创 2020-10-22 15:55:39 · 236 阅读 · 0 评论 -
Redis使用之PipeLine
redis的处理速度是微秒级别,而网络传输的速度是毫秒级别,远远慢于redis的处理速度。所以在使用redis时,网络速度会成为redis的一个瓶颈,节省网络传输的时间得到的收益会远高于节省命令执行时间的收益。所以对于批量操作,redis总提供了mset,mget这样的命令。今天要写得是pipeline管道操作,可以把多个命令操作打包成一个pipeline一起发送执行,redis处理完后打包结果返回。mget和pipeline不同之处:M操作是原子性的,而pipeline不是原子性的,执行时会把命令原创 2020-12-28 15:02:46 · 1063 阅读 · 0 评论 -
Redis的几种集群模式和工作原理
主从模式之前的文章:https://blog.csdn.net/qq_29569183/article/details/103101286主节点提供读写,从节点提供读服务,最简单的集群模式。优点:读写分离,提高性能缺点:master节点挂了以后,redis就不能对外提供写服务了,因为剩下的slave不能成为master哨兵模式基于主从模式的缺点,哨兵模式的优点之一就是高可用。介绍主从模式中,当master节点挂了以后,slave节点不能主动选举一个master节点出来,那么.原创 2020-10-10 16:19:03 · 289 阅读 · 0 评论 -
springboot整合redis集群配置
新建项目,加入Redis依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> ...原创 2019-11-25 10:48:50 · 378 阅读 · 0 评论 -
centos下安装使用Redis和相关配置
官网下载tar包:解压:[root@instance-d6rdm793 src]# tar -zxvf redis-5.0.7.tar.gz进入解压生成的文件夹,make命令[root@instance-d6rdm793 redis]# cd redis-5.0.7[root@instance-d6rdm793 redis-5.0.7]# make等待执行完成后...原创 2019-11-26 18:18:47 · 120 阅读 · 0 评论 -
Redis持久化方式及性能评估
目录Redis的持久化方式分为两种(RDB和AOF)1.RDB文件存储触发RDB方式持久化的方式:RDB方式的一些缺点:2.AOFAOF三种存储策略:Redis的持久化方式分为两种(RDB和AOF)1.RDB文件存储RDB存储就是把redis的快照进行存储,生成一个RDB文件,在redis启动时会自动加载数据到redis中;默认的文件名称为 dump.r...原创 2020-03-16 17:42:17 · 247 阅读 · 0 评论 -
Redis基本数据类型的操作命令
String类型String类型的内部编码包括raw,int,embstr; String类型的基本的操作有 get key,set key value,del key; 另外在使用Redis做计数器的场景中会对int的值进行自增操作: incr key:这个key值增加1,如果没有就创建key,value是1. decr key:这个key值减1. i...原创 2020-01-12 22:18:14 · 469 阅读 · 0 评论 -
Redis中的数据结构和内部编码
这里的数据结构可以理解为redis中存储的值对外的存储结构类型,也就是type命令查询到的类型,如hash,list,String。这里的内部编码指的是如hash这个类型redis内部又分为不同的实现,如hashtable,ziplist。这两种就是内部编码。Redis中所有的key都是String类型,值的类型可以有多种,具体如图:...原创 2020-01-12 21:54:31 · 248 阅读 · 0 评论 -
Redis基本操作命令
对初学redis做一下笔记,本篇主要是通用的操作在命令执行这个层次上Redis是单线程的,也就是再同一时间不会同时执行多条命令,因此一些耗时较长的命令是不建议使用的;另外,redis默认有16个库,默认寸数据是存在0号库linux下在已经安装并启动的redis服务环境下,redis-cli命令连接redis1.存数据: set keyvalue:如果key不存在,创...原创 2019-01-27 19:14:56 · 278 阅读 · 0 评论 -
Redis主从模式
搭建方式 主从模式的搭建只需要在丛机服务配置文件redis.conf文件中加上一行主机的ip和端口号配置: slaveof 192.168.200.128 6379 就这样,指明master的ip和端口号就可以了,然后要注意从机的端口号不要和主机相同,从机的端口号改一下。 主从模式的一个作用是备份数据,这样当一个节点损...原创 2019-11-16 18:07:49 · 505 阅读 · 0 评论 -
基于Redis过期事件实现——订单超时取消
订单超时取消的实现,首先想到的是定时任务,但是这种实现方式在订单量较大的情况下是有问题的,而且时间也会有误差,最大时间差就是定时任务的执行间隔时间。使用redis的过期监听事件可以比较好的解决这个问题。实现的方式是订单创建后向redus中存一记录,一般就以订单号为key。设置过期时间(订单超时时间),一旦时间超时会触发监听事件,这时候就可以通过key判断这个订单是否支付,未支付时取消订单。...原创 2019-12-26 16:46:22 · 6674 阅读 · 5 评论