----【Redis】
文章平均质量分 73
非关系型数据库
温娉哲
I can do this all day
展开
-
SpringBoot集成Redis | 使用注解动态切换Redis库
【摘要】 SpringBoot集成Redis | 使用注解动态切换Redis库由于工作中不同的数据信息缓存在不同的redis的16个库中,当某个地方需要用到的时候,切换redis库不方便,下面讲解的即可简便操作,可直接集成于common包中本人已将项目打包到github,有需要的可以直接去拿项目地址-github:https://github.com/Linsider/redis大家看完可以导入项目跑...由于工作中不同的数据信息缓存在不同的redis的16个库中,当某个地方需要用到的时候,切换re.原创 2021-11-28 21:23:08 · 1067 阅读 · 0 评论 -
RedisTemplate increment 错误:ERR value is not an integer or out of range解决
环境:springboot+Redis: <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.4.0.RELEASE</version> </parent>原创 2021-09-07 16:14:02 · 3658 阅读 · 2 评论 -
快速搞懂Redis五种基本数据类型的内部编码
前言Redis最基本的五种数据类型有:String(字符串),Hash(哈希),List(列表),Set(集合),ZSet(有序集合)。还有一些高级数据类型有:HyperLogLog,bitMap,GeoHash,BloomFilter。type 命令可以查看当前键的数据结构类型。可以通过 object encoding 命令查询内部编码。实际上每种数据结构都有两种以上的内部编码实现,有些内部编码可以作为多种外部数据结构的内部实现,例如ziplist 就是hash,list和zset共有的内部编码。R原创 2020-08-27 22:30:52 · 530 阅读 · 0 评论 -
浅谈Redis中Hash的渐进式rehash策略
Hash(字典)Redis中字典相当于Java语言里面的HashMap,它是无序字典。内部实现结构上和Java的HashMap也是一致的,都是数组+链表。当Hash的数组位置碰撞时,就会将碰撞的元素使用链表串接起来。Redis中的Hash 和 Java 中的HashMap 区别在于,Redis中hash(字典)的值只能是字符串。另外它们的rehash的方式也不一样,因为Java的HashMap在字典很大时,rehash是个耗时的操作,需要一次性全部rehash。Redis为了高性能,不能堵塞服务,所以原创 2020-08-25 08:53:07 · 1308 阅读 · 0 评论 -
Redis五种基本数据类型的典型应用场景
字符串1、缓存功能2、计数3、共享Session4、限速哈希1、缓存用户信息列表1、消息队列2、文章列表集合1、标签(tag)有序集合字符串1、缓存功能Redis比较典型的是缓存使用场景,其中Redis作为缓存层,MySQL作为存储层,绝大部分请求的数据都是从Redis中获取。由于Redis具有支撑高并发的特性,所以缓存通常能起到加速读写和降低后端压力的作用。使用Redis做缓存访问过程:伪代码展示代码访问流程:1)定义用于获取用户基础信息的函数UserInfo getUserInfo(l.原创 2020-08-23 11:01:27 · 659 阅读 · 0 评论 -
Redis过期策略和内存淘汰机制
前言通过EXPIRE key seconds 命令来设置 数据的过期时间。返回1表明设置成功,返回0表明key不存在或者不能成功设置过期时间。在key上设置了过期时间后key将在指定的秒数后被自动删除。被指定了过期时间的key在Redis中被称为是不稳定的。虽然给key设置了过期时间,但是有些操作会导致过期时间被清除。具体有哪些操作给一个传送门:Redis键过期命令使用注意事项键过期删除策略Redis key 过期删除的策略有三种:被动删除:当读/写一个已经过期的key时,会触发惰性删除策略,原创 2020-08-08 20:56:40 · 344 阅读 · 0 评论 -
Redis持久化之RDB和AOF区别对比
前言Redis支持RDB和AOF两种持久化机制,持久化功能有效的避免因进程退出造成的数据丢失问题,当下次重启时利用之前持久化的文件即可实现数据恢复。RDBRDB持久化是把当前进程数据生成快照保存到硬盘的过程,触发RDB持久化过程分为手动触发和自动触发。一、触发机制1、手动触发手动触发分别对应save和 bgsave 命令。save命令阻塞当前Redis服务器,直到RDB过程完成为止,对于内存比较大的实例会造成长时间阻塞,线上环境不建议使用。运行save命令对应的Redis日志如下:DB原创 2020-08-08 15:43:15 · 1883 阅读 · 1 评论 -
Redis键过期命令使用注意事项
Redis键过期命令使用注意事项1、如果expire key 的键不存在,返回结果为0127.0.0.1:6379> expire not_exist_key 30 (integer) 02、如果过期时间为负值,键会立即被删除,犹如使用del命令一样127.0.0.1:6379>set hello world OK 127.0.0.1:6379>expire hello-2 (integer)1 127.0.0.1:6379>get hello (nil)3原创 2020-08-05 19:57:33 · 921 阅读 · 0 评论 -
【Redis】字符串之常用命令与应用
字符串字符串类型是redis最基础的数据结构。键都是字符串类型,字符串类型的值实际可以是字符串(简单的字符串,复杂的字符串如JSON,XML),数字(整数,浮点数),甚至是二进制(图片,音频,视频),但是值最大不能超过512MB。常用命令1、设置值set key value [ex seconds] [px milliseconds] [nx |xx]set命令有几个选项:ex seconds:为键设置秒级过期时间。px milliseconds:为键设置毫秒级过期时间。nx:键必须不原创 2020-08-05 10:47:12 · 394 阅读 · 0 评论 -
解决Redis错误MISCONF Redis is configured to save RDB snapshots
前言在redis中添加list,字符串类型的键值对之后,redisDeskManager上提示了一些错误信息:MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled. Please check Redis logs for details about the erro原创 2020-08-04 09:53:18 · 10461 阅读 · 0 评论 -
RedisTemplate根据 key 前缀批量删除
1、根据指定Key的前缀 + “*” ,查询出所有匹配到的key2、调用RedisTemplate的delete方法,把当前获取到的指定前缀key的集合传进去Set<String> keys = redisTemplate.keys("前缀字符" + "*");redisTemplate.delete(keys);...原创 2020-07-15 21:07:23 · 3438 阅读 · 0 评论 -
Redis序列化和反序列化失败: org.springframework.data.redis.serializer.SerializationExceptionng
报错提示org.springframework.data.redis.serializer.SerializationException: Cannot deserialize; nested exception is org.springframework.core.serializer.support.SerializationFailedException: Failed to deserialize payload. Is the byte array a result of correspond原创 2020-07-05 10:46:39 · 14951 阅读 · 1 评论 -
【Redis】缓存穿透,缓存雪崩和缓存击穿区别和解决方案
一、缓存处理流程前台发起请求,后台先从缓存中取数据,取到直接返回结果,取不到时从数据库中取,数据库取到更新缓存,并返回结果,数据库也没取到,那直接返回空结果。二、缓存穿透描述:缓存穿透是指缓存和数据库中都没有的数据,而用户不断发起请求,如发起id为“-1”的数据或id为特别大不存在的数据。这时用户很可能是攻击者,攻击会导致数据库压力过大。解决方案:1、接口层增加校验,如用户鉴权校验,id做基础校验,id<=0的直接拦截2、从缓存取不到的数据,在数据库中也没有取到,这时也可以将key-v原创 2020-06-28 17:46:00 · 555 阅读 · 1 评论 -
为什么Redis选择单线程模型?
单线程模型Redis从一开始就使用单线程模型处理来自客户端的绝大多数的网络请求,即Redis可以支持IO多路复用。除此之外还有其他原因:1、使用单线程模型能带来更好的维护性,方便开发和调试。2、使用单线程模型也能并发的处理客户端的请求。3、Redis服务中运行的绝大多数操作的性能瓶颈都不是CPU。性能瓶颈虽然多线程能够充分利用CPU的计算资源来并发的执行不同的任务,但是CPU资源并不是Redis服务器的性能瓶颈。Redis不是CPU密集型的服务,如果不开启AOF备份,所有Redis的操作都会在原创 2020-05-27 20:23:41 · 401 阅读 · 0 评论 -
Redis缓存与MySQL一致性的实现
一、实时同步对强一致要求比较高的,应采用实时同步方案,即查询缓存查询不到再从DB查询,保存到缓存;更新缓存时,先更新数据库,再将缓存设置过期(建议不要去更新缓存内容,直接设置缓存过期)@Cacheable:查询时使用,注意Long类型需转换为String类型,否则会抛异常。@CachePut:更新时使用,使用此注解,一定会从DB上查询数据@CacheEvict:删除时使用@Caching...原创 2020-03-11 16:06:48 · 575 阅读 · 1 评论 -
Redis事务和秒杀业务的实现
Redis事务Redis事务可以一次执行多个命令,(按顺序地串行化执行,执行中不会被其他命令插入,不许加塞)允许在一次单独的步骤中执行一组命令,并且带有以下两个重要保证:1、Redis会将一个事务中的所有命令序列化,然后按顺序执行2、执行中不会被其他命令插入,不许出现加塞行为一个事务从开始到执行会经历以下三个阶段开始事务命令入队执行事务事务的错误处理队列中某个命令出现了报告错误...原创 2020-03-11 15:56:20 · 480 阅读 · 0 评论 -
Redis的安装和配置详细教程
在企业级开发中,Redis可以用做数据库,缓存(热点数据(经常会被查询,但是不经常被修改或者删除的数据))和消息中间件等大部分功能,使用频率非常高,下面对redis的安装和配置做详细介绍。1、安装下载安装包Redis官网下载地址上传到路径 /home/sophia/ 下解压 tar -xvf redis-5.0.0.tar.gz编译安装 mv redis-5.0.0 ...原创 2020-03-03 09:02:08 · 533 阅读 · 0 评论