redis
文章平均质量分 51
xzm_
这个作者很懒,什么都没留下…
展开
-
基于redis实现的附近商户
主要利用redis3.2后添加的geo。初始化redis中的数据。原创 2023-06-12 23:18:32 · 168 阅读 · 0 评论 -
基于redis实现点赞相关功能
1.实现基础的点赞功能(当用户进行点赞判断是否已经点赞,若点赞则取消若未点赞则点赞)实现方式:在redis中存入一个set集合每当一个用户进行点赞则将改用户id存入key为他所点赞的帖子的id+标志字符,每次点赞前进行判断该set集合中是否存在,若存在则取消赞,并删除set中的用户id,不存在则添加赞并添加用户id到set集合中代码添加点赞排行功能(显示点赞的前几名)set集合不支持排序,所以需要将set集合更改为sortedSet原创 2023-06-07 13:02:21 · 873 阅读 · 0 评论 -
基于redis实现消息队列(更推荐使用专业的mq)
——lpush存放队列(lpush 队列名 队列内容(可一次存放多个内容,用空格隔开)) brpop取队列(brpop 队列名 等待时间单位秒(一次取一个))个人感觉:mq>stream>list>pubsub。基于pubsub实现消息队列(发布订阅模型)利用redis实现消息队列(基于stream的消息队列。修改java代码实现发送消息。基于list,点对点模型。案例,更改之前的案例。原创 2023-06-05 14:46:07 · 710 阅读 · 0 评论 -
redis优惠卷秒杀-------优化
优化流程(1:库存不足,2:用户已经下单,无法重复下单确保一人一单,0:有下单资格)1.修改添加优惠卷业务,在添加优惠卷到数据库的同时添加到redis中。因为时串行执行且多次调用数据库,所以效率较慢,所以引入队列概念。2.编写lua脚本,实现秒杀库存,一人一单,决定抢购是否成功。原创 2023-06-05 12:05:51 · 36 阅读 · 0 评论 -
基于秒杀-----分布式锁----lua脚本
现阶段存在问题:当线程阻塞时间超过setnx的自动过期时间时可能导致一人多单和setnx的key误删情况。3.修改业务类(仅进行注入了RedissonClient 和创建锁对象和trylock的参数)解决方法:使用redis的框架redisson实现分布式锁。需要优化的问题:不可重入,不可重试,超时释放,主从一致。:多进程可见,互斥,高可用,高性能,安全性。解决方法:让判断锁标识与释放锁保持原子性。测试结果:实现了多个服务器下的一人一单。1.创建获取锁删除锁的工具类。redis分布式锁的优化。原创 2023-05-29 21:33:58 · 1126 阅读 · 0 评论 -
商品显示秒杀-一人一单业务
如果报错可将代理注解关闭将serviceImpl中的内容更改为(作者的事务依旧可以实现,原理暂时未知,如有知道的大神希望可以告诉一声)出现问题:依旧为超卖问题,因为为新增操作,所以无法进行添加乐观锁,进行添加悲观锁。到目前依旧有问题——在集群模式下依旧存在并发问题,依旧存在一人多单问题。3.修改后代码(需要在service中添加方法-自行添加即可)解决方法------分布式锁。2.在启动类上添加注解。原创 2023-05-26 22:22:07 · 85 阅读 · 0 评论 -
redis优惠卷秒杀
改进方法不在进行判断数量是否与开始查询到的数量一致,改进行判断数量是否大于0。改进后发现成功率大幅下降预期成功率在0.5实际成功率0.2(乐观锁的弊端)引入概念乐观锁悲观锁,悲观锁为强制所有线程串行执行,会导致效率低下。出现的问题,多线程并发冲突,会导致多卖。测试(与预期结果一致)原创 2023-05-26 20:41:19 · 108 阅读 · 0 评论 -
商品秒杀-redis的id自动生成(避免用户猜到id)
1.自定义全局id生成器。原创 2023-05-24 20:45:25 · 72 阅读 · 0 评论 -
redis缓存------实现增删改查中的redis缓存实现
流程分析实现代码service。原创 2023-05-23 23:30:47 · 296 阅读 · 0 评论 -
基于redis实现session的登录功能
创建一个新的拦截器,拦截一切路径,并此拦截器只进行刷新redis时间后直接放行,需要验证是否登陆的功能放在原拦截器中实现。因为拦截器为交给spring管理,所以需要在mvc的拦截器中进行注入StringRedisTemplate。拦截器只拦截了需要访问的功能,当用户访问不需要登录的功能时redis依旧会过期。拦截所有请求的拦截器(刷新token的拦截器)在拦截器中实现redis的时间刷新。拦截需要登录的拦截器。原创 2023-05-22 21:17:12 · 273 阅读 · 0 评论 -
Redis-spring data
Bean//创建redistemplate对象//设置连接工厂//常见json序列化工具//设置key的序列化//设置value的序列化//返回记得引入json依赖注入参数时需要指定数据类型。原创 2023-05-21 20:49:36 · 49 阅读 · 0 评论 -
redis-jedis
整合过程1.引入依赖2.进行测试。原创 2023-05-21 17:15:23 · 30 阅读 · 0 评论 -
初始Redis
链接:https://pan.baidu.com/s/1aLkOBakXa3LfzT2517G4Hw。(1)将配置文件进行备份(配置文件在/usr/local/src/redis-6.2.6。(2.)安装依赖(redis是基于c语言开发的,所以需要先安装依赖)(3.)上传安装包到usr/local/src下并进行解压。1.默认启动(前台启动):redis-server。(4.)进入redis解压后的目录并进行编译。(只有源码需要自行编译,或者订阅作者的付费)默认的安装路径是usr/local/bin。原创 2023-05-21 13:34:20 · 547 阅读 · 0 评论 -
分布式多级缓存
指定对哪个database记录binary log events,这里记录heima这个库。:设置binary log文件的存放地址和文件名,叫做mysql-bin。:数据库地址和端口,如果不知道mysql容器地址,可以通过。(2)在MySQL中创建一个新用户以用来数据同步。2.创建docker网络并让mysql加入。(3)重启docker的mysql容器。3.在docker导入canal镜像。(1)修改mysql的配置文件。:这是canal的默认监听端口。1.开启mysql的主从同步。原创 2023-04-22 16:45:50 · 421 阅读 · 0 评论 -
【无标题】
Redis5.0之前集群命令都是用redis安装包下的src/redis-trib.rb来实现的。因为redis-trib.rb是有ruby语言编写的所以需要安装ruby环境。注意集群模式中进入redis一定要加上-c参数,例:redis-cli -c -p 7001。1.删除原本的7001 7002 7003目录,以防产生干扰,并创建新的目录。启动命令:redis-server redis.conf。2.在tmp目录中创建配置文件redis.conf。2.将之前的redis的aof关闭rdb开启。原创 2023-04-20 22:46:23 · 293 阅读 · 0 评论