202101-22 基于redis setIfAbsent的使用说明 如果为空就set值,并返回1如果存在(不为空)不进行操作,并返回0很明显,比get和set要好。因为先判断get,再set的用法,有可能会重复set值。setIfAbsent和setnxsetIfAbsent是java中的方法setnx是redis命令中的方法setnx例子redis>SETNXmykey"Hello"(integer)1redis>SETNXmykey"World"(integer)0redis>GETmykey"Hello"setIfAbsent例子代码:BoundValueOperationsboundValueOperations=this.redisTemplate.boundV... 继续阅读 >
202101-10 redis-benchmark并发压力测试的问题解析 前言:Redis-benchmark:Redis自带了一个叫redis-benchmark的工具来模拟N个客户端同时发出M个请求。(类似于Apacheab程序)。你可以使用redis-benchmark-h来查看基准参数。参数简介:支持以下参数:用法:redis-benchmark[-h<主机>][-p<端口>][-c<客户端>][-n<请求]>[-k<布尔>]-h <主机名>服务器主机名(默认值为127.0.0.1)-p <端口>服务器... 继续阅读 >
202012-26 Redis不仅仅是缓存,还是…… 你需要一个经典数据库吗?一段时间以来,巨大数量的数据处理迫使所有的应用程序在数据库层前添加缓存策略。即使经典数据库进行了大量的下划线优化,仍然不能提供足够的速度和可用性。主要原因在于数据存储越远,获取数据就越困难。另一个原因是因为数据库中的数据通常保存在磁盘中,而不是在内存。经典数据库却是在内存上嵌入了缓存来优化,但是拥有一个专用的独立缓存也是一种很常用的策略。在解决访问数据库的性能问题,通常的解... 继续阅读 >
202012-23 使用go操作redis的有序集合(zset) 我就废话不多说了,大家还是直接看代码吧~packagemainimport("fmt""github.com/garyburd/redigo/redis")funcmain(){//连接redis数据库,指定数据库的IP和端口conn,err:=redis.Dial("tcp","36.99.16.197:6379")iferr!=nil{fmt.Println("Connecttorediserror",err)return}else{fmt.Println("Connecttoredisok.")}//函数退出时关闭连接deferconn.Close()//执行一个有序zset插入_,err=conn.D... 继续阅读 >
202012-17 Shiro+Redis实现登录次数冻结的示例 概述假设我们需要有这样一个场景:如果用户连续输错5次密码,那可能说明有人在搞事情,所以需要暂时冻结该账户的登录功能关于Shiro整合JWT,可以看这里:Springboot实现Shiro+JWT认证假设我们的项目中用到了shiro,因为Shiro是建立在完善的接口驱动设计和面向对象原则之上的,支持各种自定义行为,所以我们可以结合Shiro框架的认证模块和redis来实现这个功能。思路我们大体的思路如下:用户登录Shiro去Redis检查账户的登录错误... 继续阅读 >
202012-17 浅谈redis加锁常用几种方式 一、incr加锁<?php$redis=newRedis();$redis->connect('127.0.0.1');$redis->multi();$redis->incr('number');//$redis->decr('number');//$redis->expire('number',-1);var_dump($redis->get('number'));var_dump($redis->ttl('number'));二、setnx加锁<?php$redis->setnx('name','felix');var_dump($redis->get('name'));var_dump($redis->ttl('name'));三、set加锁<?php$redis->set('like','chuangxi',['nx'... 继续阅读 >
202012-17 详解redis中的锁以及使用场景 分布式锁什么是分布式锁?分布式锁是控制分布式系统之间同步访问共享资源的一种方式。为什么要使用分布式锁?为了保证共享资源的数据一致性。什么场景下使用分布式锁?数据重要且要保证一致性如何实现分布式锁?主要介绍使用redis来实现分布式锁redis事务redis事务介绍:1.redis事务可以一次执行多个命令,本质是一组命令的集合。2.一个事务中的所有命令都会序列化,按顺序串行化的执行而不会被其... 继续阅读 >
202012-17 Redis Value过大问题(键值过大) RedisBigKey问题数据量大的key,由于其数据大小远大于其他key,导致经过分片之后,某个具体存储这个bigkey的实例内存使用量远大于其他实例,造成内存不足,拖累整个集群的使用。bigkey在不同业务上,通常体现为不同的数据,比如:论坛中的大型持久盖楼活动;聊天室系统中热门聊天室的消息列表;带来的问题bigkey通常会导致内存空间不平衡,超时阻塞,如果key较大,redis又是单线程,操作bigkey比较耗时,那么阻... 继续阅读 >
202012-17 详解Redis中key的命名规范和值的命名规范 数据库中得热点数据key命名惯例表名:主键名:主键值:字段名例如user:id:0001:name例如user:id:0002:name例如order:id:s2002:price上面的key对应的值则可以是存放的方式keyvalue优点单独的key:value形式order:id:s2002:price2000方便简单的操作,例如incr自增或自减... 继续阅读 >
202012-17 Redis 哨兵高模式搭建及Java代码配置 Redis的下载和安装及遇到问题的解决 准备配置文件#配置文件进行了精简,完整配置可自行和官方提供的完整conf文件进行对照。端口号自行对应修改#后台启动的意思daemonizeyes#端口号port6380#IP绑定,redis不建议对公网开放,直接绑定0.0.0.0没毛病bind0.0.0.0#redis数据文件存放的目录dir/usr/local/redis/data#开启AOFappendonlyyes#开启集群cluster-enabledyes#会自动生成在上面配置的dir目录下cluste... 继续阅读 >
202012-17 推荐一款神仙颜值的 Redis 客户端工具(速收藏) 日常开发过程中,项目常常都会使用Redis来做缓存或者Session服务器,为了更直观方便,开发者常常会使用一些可视化工具,如 RedisDesktopManager、RedisClent等,但界面UI做得不尽人意,作为当今时代,对软件的UI还是有所期待的,今天给大家分享一款,高颜值、功能强大的Redis客户端工具AnotherRedisDesktopManager开源地址:https://gitee.com/qishibo/AnotherRedisDesktopManager一个更快、更好、更稳定的redis桌面管理工... 继续阅读 >
202012-17 还不懂Redis?看完这个趣味小故事就明白了! 你好,我是Redis,一个叫Antirez的男人把我带到了这个世界上。说起我的诞生,跟关系数据库MySQL还挺有渊源的。在我还没来到这个世界上的时候,MySQL过的很辛苦,互联网发展的越来越快,它容纳的数据也越来越多,用户请求也随之暴涨,而每一个用户请求都变成了对它的一个又一个读写操作,MySQL是苦不堪言。尤其是到“双11”、“618“这种全民购物狂欢的日子,都是MySQL受苦受难的日子。据后来MySQL告诉我说,其实有一大半的用户请... 继续阅读 >
202012-14 java redis 实现简单的用户签到功能 业务需求是用户每天只能签到一次,而且签到后用户增加积分,所以把用户每次签到时放到redis缓存里面,然后每天凌晨时再清除缓存,大概简单思想是这样的 直接看代码吧如下 @Transactional@OverridepublicvoidsignIn(IntegermemberId)throwsBizException{if(memberId==null){thrownewBizException(ErrorCode.BIZ_EXCEPTION.getErrcode(),"签到用户id不能为null");}Stringday=DateFormatUtils.for... 继续阅读 >
202012-14 Redis不同数据类型使用场景代码实例 Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sortedset:有序集合)。Redis列表命令参考:http://www.redis.net.cn/tutorial/3501.html使用场景StringString数据结构是简单的key-value类型,value其实不仅可以是String,也可以是数字。常规key-value缓存应用;常规计数:微博数,粉丝数等。hashRedishash是一个string类型的field和value的映射表,hash特别适合用于存储对象。... 继续阅读 >
202012-10 Redis 缓存实现存储和读取历史搜索关键字的操作方法 一、本案例涉及知识 LayuiRedisVue.jsjQueryAjax二、效果图三、功能实现(一)使用Layui的样式构建页面<!DOCTYPEhtml><html><head><metacharset="utf-8"><title>Redis应用-搜索历史</title><!--引入LayuiCSS--><linkrel="stylesheet"href="css/layui.css"rel="externalnofollow"></head><body><divclass="layui-form"style="width:50%;margin-top:20px;"id="app"><divclass="layui-form-... 继续阅读 >
202012-05 Redis六大数据类型使用方法详解 我们说Redis相对于Memcache等其他的缓存产品,有一个比较明显的优势就是Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。本篇博客我们就将介绍这些数据类型的详细使用以及顺带介绍Redis系统的相关命令用法。注意:Redis的命令不区分大小写,但是key严格区分大小写!!!0、写在前面下面介绍的Redis命令有很多,如果你想通过死记硬背来记住这些命令几乎不可能,但... 继续阅读 >