redis应用实例

2019-12-06  本文已影响0人  jiezzy

我是如何用redis做实时订阅推送的
最全的Java操作Redis的工具类

redis系列文章目录

Redis-Cluster集群整合SpringCache
https://blog.csdn.net/plei_yue/article/details/78791440

使用redis和spring集成

SpringDataRedis事务 专题

Spring和Redis整合详解
https://blog.csdn.net/fighterandknight/article/details/53432276
https://blog.csdn.net/weixin_34273481/article/details/92428114

springboot+redis项目实战

Spring项目集成Redis,序列化方式改为Jackson2JsonRedisSerializer && redis集群配置
https://blog.csdn.net/sinat_38278330/article/details/82150879

redis使用Jackson2JsonRedisSerializer序列化问题
基于spring的redisTemplate的缓存工具类

spring-data-redis注册fastjson序列化工具
Redis(放弃用jackjson来做value的序列化,使用FastJson来做)
https://www.cnblogs.com/songanwei/p/9274348.html
https://www.cnblogs.com/aoeiuv/category/990817.html

Jackson2JsonRedisSerializer和GenericJackson2JsonRedisSerializer的区别

redis SortedSet队列

常用命令

KEYS *

#确认一个key 是否存在 exists key
exists

#随机返回一个key
randomkey

#重命名key rename name name_new
rename

#仅当 newkey 不存在时,将 key 改名为 newkey   RENAMENX OLD_KEY_NAME NEW_KEY_NAME
Renamenx 

#返回值的类型 type key
type 

#返回当前数据库中key 的数目
dbsize

#删除一个key
del

#设置一个key 的过期时间(单位:秒),ttl命令检测有效时长
expire

#移除给定 key 的过期时间,使得 key 永不过期
persist

#返回 key 的剩余过期时间(以秒为单位)  TTL KEY_NAME
ttl

#以毫秒为单位返回 key 的剩余过期时间  PTTL KEY_NAME
Pttl

#选择数据库(redis默认16个数据库 0~15)select 2
select

#将当前数据库中的key 转移到其它数据库中 move key 1
move

#删除 Redis 中当前所在数据库中的所有记录
flushdb

#删除 Redis 中所有数据库中的所有记录
#对于FLUSHALL命令,需要设置配置文件中appendonly no,否则服务器无法启动
flushall

#测试连接是否存活
ping

#客户端可修改 Redis 配置
config

#获取服务器配置信息。  config get *
config get

禁用命令

rename-command KEYS     ""
rename-command FLUSHALL ""
rename-command FLUSHDB  ""
rename-command CONFIG   ""

#下面的 XX 可以定义新命令名称,或者用随机字符代替。以上的设置之后,危险命令就不会被客户端执行了
rename-command KEYS     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
rename-command FLUSHALL "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
rename-command FLUSHDB  "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
rename-command CONFIG   "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
那么可以通过这个函数,将一分钟内请求短信次数超过3次的手机号拉黑(具体短信请求几次根据具体业务场景确定,我们公司这个业务一分钟内请求2次短信就可以的)

补分代码如下,使用expire设置key的生命周期。在expire(多长时间内)这个key被用一次就incr一次。具体上限自己确定

注意:自增函数 ,key为自己定义字符串+手机号(方便删除)

<textarea readonly="readonly" name="code" class="Java"> 
 public Long incr(String key) {
            Jedis jedis = Redis.Operate.getJedis();
            try {
                return jedis.incr(key);
            } finally {
                if (null != jedis) {
                    jedis.close();
                }
            }
        }
//使用expire设定key的生命周期,(即在多长时间内计数达到上限)
public void expire(String key, int seconds) {
            Jedis jedis = Redis.Operate.getJedis();
            try {
                jedis.expire(key, seconds);
            } finally {
                jedis.close();
            }
        }





//最后写判断 count 数和最后自增数比较。超了就。。。。你懂得。大体如下
long count = incr(key);
if (count == 1) {
expire(key,60);
}
if (count > 1) {
//GG,你懂得
return;
}
上一篇下一篇

猜你喜欢

热点阅读