美文网首页
redis应用实例

redis应用实例

作者: jiezzy | 来源:发表于2019-12-06 17:53 被阅读0次

    我是如何用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;
    }
    

    相关文章

      网友评论

          本文标题:redis应用实例

          本文链接:https://www.haomeiwen.com/subject/ggeegctx.html