基于Spring的 Redis工具类
来源:互联网 发布:转行程序员 编辑:程序博客网 时间:2024/05/18 06:27
知己知彼
RedisTemplate 简化Redis数据访问代码的助手类。在给定对象和底层二进制数据之间执行自动序列化/反序列化
Redis商店。默认情况下,它使用Java序列化对象(通过{@link JdkSerializationRedisSerializer})。对于字符串密集型操作,请考虑专用的{@link StringRedisTemplate}。支持实现RedisCallback接口的Redis访问代码。它提供{@link RedisConnection}处理,使得既不实现RedisCallback,也不调用代码需要明确地关心检索/关闭Redis连接,或处理连接生命周期 。对于典型的单步操作,有各种便利方法。一旦配置,这个类是线程安全的。请注意,虽然模板是基因化的,但要由序列化器/反序列化器来正确转换给定的序列
*来自二进制数据的对象。
StringRedisTemplate RedisTemplate的字符串聚焦扩展。 由于大多数针对Redis的操作都是基于String的,所以这个类提供了一个专门的类,最大限度地减少其通用的{@link RedisTemplate模板}的配置,特别是在条款序列化程序。请注意,此模板将{@link RedisCallback}所使用的{@link RedisConnection}公开为{@link StringRedisConnection}。
工具类
@Componentpublic class RedisUtils {private static final Logger LOGGER = Logger.getLogger(RedisUtils.class);//工具不允许实例化private RedisUtils() {}private static StringRedisTemplate stringRedisTemplate;@Autowired@Qualifier("stringRedisTemplate")private StringRedisTemplate stringRedisTemplateAutowired;/** * 初始化静态注入 */@PostConstructpublic void init() {stringRedisTemplate = this.stringRedisTemplateAutowired;}/** * 通过Key从Redis获取数据 * @param key键值 * @return */public static String get(String key) {try {String value = stringRedisTemplate.opsForValue().get(key);LOGGER.info("从Redis获取: Key: " + key + ",value: " + value);return value;} catch (Exception e) {LOGGER.error(e);return null;}}/** * 数据放入Redis * @param key * @param value * @return */public static boolean put(String key, String value) {try {stringRedisTemplate.opsForValue().set(key, value);LOGGER.info("存入Redis: Key: " + key + ",value: " + value);} catch (Exception e) {LOGGER.error(e);return false;}return true;}/** * 自定义数据存放时间 * 单位分钟 * @param key * @param value * @param time * @return */public static boolean put(String key, String value, long time) {return put(key, value, time, TimeUnit.MINUTES);}/** * 自定义数据存放时间 * @param key * @param value * @param time * @return */public static boolean put(String key, String value, long time, TimeUnit timeUnit) {try {stringRedisTemplate.opsForValue().set(key, value, time, timeUnit);LOGGER.info("存入Redis: Key: " + key + ",value: " + value);} catch (Exception e) {LOGGER.error(e);return false;}return true;}public static boolean delete(String key) {try {stringRedisTemplate.delete(key);LOGGER.info("从Redis删除: Key: " + key);} catch (Exception e) {LOGGER.error(e);return false;}return true;}/** * key是否存在 * @param key * @return */public static boolean exists(final String key) {return stringRedisTemplate.execute(new RedisCallback<Boolean>() {@Overridepublic Boolean doInRedis(final RedisConnection redisConnection) throws DataAccessException {boolean exists = redisConnection.exists(key.getBytes(StandardCharsets.UTF_8));LOGGER.info("Redis exists: Key " + key + " is " + exists);return exists;}});}/** * 自增 * @param key * @return */public static long increment(String key) {return stringRedisTemplate.opsForValue().increment(key, 1);}/** * 自减 * @param key * @return */public static long decrement(String key){return stringRedisTemplate.opsForValue().increment(key, -1);}/** * Key延时 * @param key * @param timeout * @param unit * @return */public static Boolean expire(String key, long timeout, TimeUnit unit) {return stringRedisTemplate.expire(key, timeout, unit);}/** * 刷新缓存 * @param key * @param value * @return */public static boolean refresh(String key, String value) {if (exists(key))delete(key);return put(key, value);}public static long size() {return stringRedisTemplate.execute(new RedisCallback<Long>() {@Overridepublic Long doInRedis(final RedisConnection redisConnection) throws DataAccessException {long size = redisConnection.dbSize();LOGGER.info("Redis size: " + size);return size;}});}/** * 刷新数据库 * @return */public static boolean flush() {String result = stringRedisTemplate.execute(new RedisCallback<String>() {@Overridepublic String doInRedis(final RedisConnection redisConnection) throws DataAccessException {redisConnection.flushDb();LOGGER.info("Redis数据库刷新");return "success";}});return "success".equals(result);}public static String ping() {return stringRedisTemplate.execute(new RedisCallback<String>() {@Overridepublic String doInRedis(final RedisConnection redisConnection) throws DataAccessException {String ping = redisConnection.ping();LOGGER.info("Redis ping: " + ping);return ping;}});}}
阅读全文
1 0
- 基于Spring的 Redis工具类
- Redis学习(三)-Java实现基于Jedis+Spring的通用工具类
- 基于RedisTemplate的redis工具类
- 基于spring-session的Sesion工具类
- 基于Java的redis客户端jedis管理类 工具类
- 基于redis的Spring session配置
- 基于spring的多redis数据源配置
- 基于spring-data-redis的分布式锁
- 基于spring的redisTemplate的缓存工具类
- 基于spring的redisTemplate的缓存工具类
- Spring-Redis基于Redis的MS消息服务
- Java Spring整合Redis工具类
- redis整合spring(redisTemplate工具类)
- redis整合spring(redisTemplate工具类)
- redis整合spring(redisTemplate工具类)
- scala对redis集群操作工具类 附带java版本的工具类以及spring配置
- Redis使用二、redis整合spring(redisTemplate工具类)
- redis的工具类封装
- Jenkins入门系列之——02第二章 Jenkins安装与配置
- 视觉设计中发现的11种光学错觉
- Axure8.0
- VUE学习-环境搭建
- 《算法导论》11.3-3解答——k为按基数2^p表示的字符串。试证明:如果串x可由串y通过其自身的字符置换排列导出,则x和y具有相同的散列值。
- 基于Spring的 Redis工具类
- gdb调试Go,info goroutines
- 再谈连接数据库
- 树型DP基础题目总结
- 关系数据库规范化理论---范式
- 两数和-输入已排序的数组-LintCode
- vue2.0 父子传值,子父传值
- 软件设计师考试
- 顺序表作业