新手也能看懂的redis
文章平均质量分 80
从安装到配置学习完整的安装过程,从基本数据类型类比学习,进而结合java、Springboot等技术实现应用
专注写bug
你知道的越多,你不知道的也越多!
展开
-
Redis——Springboot 整合 Redis实现发布和订阅(简单)
文章目录测试环境依赖导入配置yml编写启动类消息发送服务类消息接收(订阅)编写配置类,实现关联编写数据发布测试类案例测试测试代码测试环境idea 2020.1.1Springboot:2.1.4.RELEASE依赖导入由于本次测试demo中使用到@Slf4j注解打印日志,有不明白的可以参考往期博客,此处不错过多的阐述。IDEA——使用@Slf4j打印日志主要依赖如下:<dependency> <groupId>org.springframework.boo原创 2021-09-06 18:44:47 · 496 阅读 · 2 评论 -
Redis——记录一个Hash类型删除问题
文章目录hdel 删除hdel 删除hdel 对象key 属性field [field …]删除一个保存对象中的某些列和数据:127.0.0.1:6379> hset member-a ss 123(integer) 1127.0.0.1:6379> hdel member-a ss aa(integer) 1【注意:】删除操作在 Springboot 中,如果使用下列代码进行删除hash表操作:Long delNum = redisTemplate.opsForHa原创 2021-09-06 15:57:06 · 4256 阅读 · 0 评论 -
Redis(十八)——缓存与数据库双写不一致问题分析和解决
前言实际开发中,为了避免频繁查询数据库获取大量信息,造成额外的服务器性能开销和网络延迟问题。一般会增加缓存做数据查询后的临时保存,减少频繁操作数据库耗时问题。但是,此时却容易出现缓存与数据库双写操作不一致的问题。什么叫缓存数据库双写不一致?双写不一致的情况理想情况下请求线程1 向数据库写数据,同时更新缓存数据;线程2在线程1处理完成后,修改数据库,更新缓存。此时不会出现缓存数据库双写不一致的问题。问题出现但是,由于在实际项目上线后,可能因为分布式环境下,某些服务器GC或其他因素,导原创 2021-01-20 22:04:05 · 2985 阅读 · 0 评论 -
Springboot——整合Redis和cache缓存
文章目录前言Spring Cache案例达到目的依赖引入配置文件配置后的文件目录编写测试类等基本代码初步测试,查看数据是否能被添加至Redis缓存cache注解测试和详解@Cacheable 注解@CacheConfig注解@CachePut 注解@CacheEvict 注解@Caching注解更细节的注解信息汇总命令@Cacheable/@CachePut/@CacheEvict 主要的参数SpEL上下文数据运算符参考资料Demo下载前言实际开发中,针对请求量大的数据并且频繁请求的数据信息,在不断的对原创 2021-01-19 21:44:57 · 770 阅读 · 1 评论 -
Redis(十七)——Springboot整合RedLock实现高可用性的并发锁
前言上一篇博客中,重点说明了Redisson中,lock的用法,以及Redisson源码中对lock的创建、续命、释放锁等源码操作流程。但是,在实际开发中,有较低的可能性会出现以下问题(主从架构锁失效):1、Redis中设置主从模式,保证数据的及时备份处理。2、当主Redis获取到请求1的key,保存key后,但宕机了,此时的key未同步至从Redis。3、导致新的请求2根据redisson.getLock(key)从从节点获取key成功,但此时的请求1可能还在执行超卖逻辑。如果依旧需要使原创 2021-01-19 13:02:56 · 2050 阅读 · 4 评论 -
Redis(十六)——Springboot整合Redisson超卖问题解决
前言上一篇博客中,根据超卖问题,逐步分析了在不同环境下,多种思路的局限性。这篇博客具体针对上一篇博客中存在的问题做合理解决。Redisson查考资料redisson 官方github文档Redisson和jedis都是java实现的Redis的客户端。但Redisson比jedis具有更多的功能。依赖引入<dependency> <groupId>org.redisson</groupId> <artifactId>redisson</原创 2021-01-14 19:01:57 · 1053 阅读 · 3 评论 -
Redis(十五)——Springboot整合Redis超卖问题还原和分析
前言前面几篇博客,讲明了Redis的安装、配置和基本命令使用;以及java使用Redis操作数据、Springboot整合Redis操作数据等。本篇博客以某公众号思想为例,写结合Redis对高并发环境下,商品超卖问题的解决思路。超卖简单代码写一段简单正常的超卖逻辑代码,多个微服务同时操作同一段数据,探究出现的问题。Redis中存储一项数据信息,请求对应接口,获取商品数量信息;商品数量信息如果大于0,则扣减1,重新存储Redis中;运行代码测试问题。其他代码的配置项,采取上一篇博客的配置为原创 2021-01-14 16:03:19 · 682 阅读 · 0 评论 -
Redis(十四)——Springboot整合Redis,以及乱码解决
文章目录Springboot整合Redis依赖引入配置文件编写编写测试案例,实现数据读写测试Springboot整合Redis依赖引入<!-- redis --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </depende原创 2021-01-14 11:25:58 · 510 阅读 · 2 评论 -
Redis(十三)——java远程连接redis操作
文章目录前言依赖引入使用jedis连接数据库前言之前的博客讲述了基本的客户端类操作Redis数据库,使用命令设置数据、redis数据库基本配置等。本章节主要说明如何使用java操作Redis数据据。依赖引入使用java操作Redis数据库,需要使用到jedis这个依赖,所以此处需要引入相关依赖。<!-- https://mvnrepository.com/artifact/redis.clients/jedis --><dependency> <group原创 2021-01-12 13:53:50 · 536 阅读 · 0 评论 -
Redis(十二)——Redis主从配置
文章目录前言从属Redis服务器配置1、配置前的说明2、创建端口为6380的从属Redis目录3、配置文件修改4、启动主、从Redis服务前言正常的项目开发中,单一Redis或者Redis集群对数据处理远远达不到数据的绝对安全。受到网络冲击、恶意请求、服务器硬件配置等因素Redis服务器宕机,导致项目停止运转等现象也时有发生,为了保证数据可供应急恢复,配置Redis从属服务器必不可需。从属Redis服务器配置由于测试使用服务器有限,本次测试配置实验以本地不同端口方式进行配置。1、配置前的说明端原创 2021-01-11 18:14:19 · 336 阅读 · 1 评论 -
Redis(十一)——Redis配置密码
文章目录前言Redis配置文件的修改配置后的测试使用密码登录的另一种方式前言在测试中,只需要将就Redis的测试使用即可;但实际开发中,为了保护数据的安全性,需要针对Redis的访问增加账号密码操作!Redis配置文件的修改由于使用的Redis配置文件放置于/usr/local/redis/conf/路径下,此时需要修改其中的配置文件信息。vi /usr/local/redis/conf/redis.conf查询找到 security 配置,增加密码配置。requirepass xian原创 2021-01-11 16:53:53 · 388 阅读 · 0 评论 -
Redis(十)——Redis乐观锁
文章目录乐观锁、悲观锁乐观锁的有点Redis中的锁Redis乐观锁测试乐观锁、悲观锁锁有什么用?在数据库执行数据操作时,为了保证数据的一致性,即:A用户更新数据时,B用户不能更新!在没有锁的情况下:如果A、B都去针对相同的数据做更新操作。数据库中的数据为最后提交的数据。锁是什么?在数据库的设计上,分为两种:悲观锁、乐观锁。悲观锁:基于数据库的操作实现。在数据库数据操作时,如果A用户查询到指定的数据,并增加for update属性后select * from user原创 2021-01-11 16:33:42 · 1682 阅读 · 0 评论 -
Redis(九)——Redis事务
前言Redis本身也支持事务,但其本身针对事务处理是具有设计缺陷的。Redis事务命令打开事务:multi关闭事务:discard提交事务:exec注意:传统关系型数据库中针对事务,还具有commit、rollback等操作,在redis中是不存在!观察事务(不提交事务)针对Redis事务的测试方式,此处可以设置一个key简单的数据,结合上述的事务命令完成测试。1、创建一条数据127.0.0.1:6379> set age 10OK2、开启redis事务原创 2021-01-10 18:24:41 · 245 阅读 · 0 评论 -
Redis(八)——SortedSet有序集合类型
文章目录前言追加有序集合(zadd)取出有序集合中的`元素`(zrange)删除集合数据(zrem)数据增长(zincrby)删除指定集合(del)返回元素所在集合的`索引`(zrank)反转数据,取得`索引`(zrevrank)反转操作,获取`元素`(zrevrange)根据`分数`取得范围内数据(zrangebyscore)根据`分数`取得指定范围内数据个数(zcount)获取集合大小(zcard)根据下标排序,删除指定范围内的数据(zremrangebyrank)前言在java中,集合分为有序和无原创 2021-01-10 17:47:45 · 269 阅读 · 0 评论 -
Redis(七)——Set数据类型
前言Set在java中属于一种无序集合,相关源码说明在我博客中有所说明,此处不做阐述。Redis中的Set数据类型,最大优点是基于数据集合的比对处理。例如可以实现数据的交集、并集、差集。在现实生活中,比如抖音中的好友推荐,如:您和您的好友共同关注谁、您可能要关注谁。向集合中添加数据sadd key member [member …]查询set集合删除集合元素从集合中随机弹出一个元素返回两个集合的差集将差集保存至另外一个集合中交集计算将交集保存至另外一个集合中并集计算,将两个集合原创 2021-01-10 16:08:09 · 292 阅读 · 0 评论 -
Redis(六)——List数据类型
前言上一篇博客中,主要说到了Hash类型,可以实现保存对象信息的基本操作,也就是说可以针对Java的对象信息做系列的存储。在java中,也存在集合类型的数据,比如List、Set等,List集合属于有序集合,在Redis中也是一样,保存的数据也是一种有序集合。本篇博客重点说明List数据类型的基本使用命令。List数据类型是一种比较麻烦的处理操作,List作为链表结构,具有很高的时间复杂度。其主要进行内容的保存、节点的设置、递归遍历。向栈中从左压入数据(lpush)lpush key value原创 2021-01-05 21:18:06 · 223 阅读 · 0 评论 -
Redis(五)——Hash数据类型
前言之前博客中介绍了字符串类型、数字类型的操作方式,但总体而言,保存的数据量依旧比较少,为了保存更大量的数据,可以采取Hash类型实现。就好比java中以对象保存数据,Redis存储不可能将对象ToString存储。class Member{ private Integer id; private String username; private Integer age;}保存Hash数据(hset)hset key field valuehset 对象KEY 属性KEY 属原创 2021-01-05 19:02:59 · 417 阅读 · 0 评论 -
Redis(四)——基本数字类型操作
自增处理(incr)incr key设置一个不存在的数据当redis数据库中,不存在指定的数据时,采取命令设置数据,会出现什么情况?127.0.0.1:6379> keys *(empty list or set)127.0.0.1:6379> incr aa(integer) 1127.0.0.1:6379> get aa“1”不存在指定的key时,采取incr命令,会创建数据。设置一个存在的数据127.0.0.1:6379> get aa原创 2021-01-05 16:40:41 · 596 阅读 · 0 评论 -
Redis(三)——字符串类型操作
获取所有设置的key(keys *)keys pattern例如:keys *keys l*清空数据(flushdb)当测试使用到的数据过多,可以使用如下指令,清空所有数据:flushdb设置操作数据(set)set key value [EX seconds] [PX milliseconds] [NX|XX]如:set username-a banana如果针对同一个key,设置不同的数据,会发生什么?127.0.0.1:6379> flush原创 2021-01-05 16:07:18 · 329 阅读 · 0 评论 -
Redis(二)——Redis自带性能监测工具benchmark的使用
测试环境1核2G 腾讯云centos 7.8启动Redis服务/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis.conf命令执行完成后,查看Redis-server是否成功启动完成:benchmark的使用一、输入下列命令,查看帮助文档:redis-benchmark --helpUsage: redis-benchmark [-h <host>] [-p <port>] [-c &原创 2021-01-04 20:33:30 · 368 阅读 · 0 评论 -
Redis(一)——redis的简介、安装和配置(centos 7.8)
前言在程序开发中,绝大多数会使用到关系型数据库。因为访问量不大或者小业务需求,mysql、oracle等就能满足其需求。关系型数据库的使用核心是各种sql语法,其具备以下弊端:sql语法相比其他数据操作更加严格;进行sql处理数据一旦处理不当,则会出现大量的笛卡尔积。关系型数据库利用ACID原则(原子性、一致性、隔离性、持久性)保证数据的完整性,ACID具有严格的事务控制,一个事务Session在处理数据时,如果该session未提交或未回滚,其他事务则不能进行提交操作。导致事务操作处理速率慢!原创 2021-01-04 20:05:40 · 287 阅读 · 1 评论