首页 > 其他 > 详细

我在公司的第一个Redis代码

时间:2021-05-13 13:47:42      阅读:13      评论:0      收藏:0      [点我收藏+]
@Resource(name = "omStringRedisTemplate")
    private StringRedisTemplate stringRedisTemplate;

    private String SHIPPER_BANNER_DISPLAY_KEY_PREFIX = "shipper_banner_disPlay_userId_";

    private String SETNX_EXPIRE_LUA = "if redis.call(‘setnx‘, KEYS[1], ARGV[1]) == 1 then redis.call(‘expire‘, KEYS[1], ARGV[2]) return ‘true‘ else return ‘false‘ end";
String flag = stringRedisTemplate.execute(new RedisCallback<String>() {
            @Override
            public String doInRedis(RedisConnection connection) throws DataAccessException {
                Object nativeConnection = connection.getNativeConnection();
                // 集群模式和单机模式虽然执行脚本的方法一样,但是没有共同的接口,所以只能分开执行
                // 集群模式
                if (nativeConnection instanceof JedisCluster) {
                    return (String) ((JedisCluster) nativeConnection).eval(SETNX_EXPIRE_LUA, keys, args);
                }

                // 单机模式
                else if (nativeConnection instanceof Jedis) {
                    return (String) ((Jedis) nativeConnection).eval(SETNX_EXPIRE_LUA, keys, args);
                }
                return "false";
            }
        });

        return Boolean.valueOf(flag) ;

 

我在公司的第一个Redis代码

原文:https://www.cnblogs.com/juniorMa/p/14763329.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!