zoukankan      html  css  js  c++  java
  • 根据key查询redis中是否存在key对应的value,根据key获取值

    工具类:

    package com.ljxx.service.common;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.data.redis.core.*;
    import org.springframework.data.redis.serializer.StringRedisSerializer;
    import org.springframework.data.redis.support.atomic.RedisAtomicLong;
    import org.springframework.stereotype.Service;
    
    import javax.annotation.Resource;
    import java.io.Serializable;
    import java.util.Date;
    import java.util.List;
    import java.util.Set;
    import java.util.concurrent.TimeUnit;
    
    
    @Service
    public class RedisService {
    
    
        @Autowired
        private RedisTemplate redisTemplate;
    
    
        @Autowired
        private StringRedisTemplate stringRedisTemplate;
    
        @Value("${system.redisPre}")
        private String redisPre;
    
    
        /**
         * string类型
         */
    
        //删除key
        public void deleteKey(String key) {
            stringRedisTemplate.delete(redisPre + key);
        }
    
        //判断key存在
        public boolean keyIsExists(String key) {
            return stringRedisTemplate.hasKey(redisPre + key);
        }
    
        //设置key失效时间,以秒为单位
        public void setKeyTimeOut(String key, long second) {
            stringRedisTemplate.expire(redisPre + key, second, TimeUnit.SECONDS);
        }
    
        //设置值
        public void setValue(String key, String val) {
            stringRedisTemplate.boundValueOps(redisPre + key).set(val);
        }
    
        //获取值
        public String getValue(String key) {
            return stringRedisTemplate.boundValueOps(redisPre + key).get();
        }
    
    
        /**
         * object类型
         */
        //存入对象
        public void setObject(String key, Object obj) {
            getRedisTemplate().boundValueOps(redisPre + key).set(obj);
        }
    
        //获取对象
        public Object getObject(String key) {
            return getRedisTemplate().boundValueOps(redisPre + key).get();
        }
    
        //删除对象
        public void delObject(String key) {
            getRedisTemplate().delete(redisPre + key);
        }
    
        //设置对象过期时间
        public void setObjectTimeOut(String key, long second) {
            getRedisTemplate().expire(redisPre + key, second, TimeUnit.SECONDS);
        }
    
        //判断对象是否存在
        public boolean objectIsExists(String key) {
            return getRedisTemplate().hasKey(redisPre + key);
        }
    
    
        //获取RedisTemplate,把key进行string序列化,那么在库中就显示的原始的key值,否则就是16进制的值不方便。
        private RedisTemplate getRedisTemplate() {
            //设置key是string类型的序列
            redisTemplate.setKeySerializer(new StringRedisSerializer());
            //设置hashKey是string类型的序列
            redisTemplate.setHashKeySerializer(new StringRedisSerializer());
            return redisTemplate;
        }
    
    
    }

    使用工具类:注入

    @Autowired
        private RedisService redisUtil;

    调用工具类的方法:

    if (!redisUtil.objectIsExists(token)) {
                return Result.error("token已经失效!");
    }
    User user = (User) redisUtil.getObject(token);
  • 相关阅读:
    文件上传与下载/Mail
    监听器/国际化
    过滤器
    父类转为子类涉及到的安全问题
    连接池
    【MySQL】Windows10下的安装与配置
    【neo4j】关于出现The old parameter syntax `{param}` is no longer supported. Please use `$param` instead的问题
    关于GitHub上传超过100M文件方法
    记录一次在知道创宇公司的实习面试经历
    《机器学习实战(基于scikit-learn和TensorFlow)》第七章内容学习心得
  • 原文地址:https://www.cnblogs.com/zwh0910/p/15091233.html
Copyright © 2011-2022 走看看