分享

redis工具类

 樱花梦_张艺馨 2023-09-19

package com.imooc.utils;

import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Component;

import java.util.Map;
import java.util.Set;
import java.util.concurrent.TimeUnit;

/**
 * @Description redis工具类
 * @Date
 **/
@Component
public class RedisOperator {
    @Autowired
    private StringRedisTemplate redisTemplate;
    /**
     *功能描述: 实现命令:DEL key ,删除一个key
     * @params
     * @return void
     */
   public void del(String key){
       redisTemplate.delete(key);
   }
    /**
     *功能描述: 实现命令:expire 设置过期时间,单位秒
     * @params
     * @return void
     */
    public void expire(String key,long timeout){
        redisTemplate.expire(key,timeout, TimeUnit.SECONDS);
    }
    /**
     *功能描述: 实现命令:GET key ,返回key所关联的字符串值
     * @params
     * @return java.lang.String
     */
    public String get(String key){
        return (String)redisTemplate.opsForValue().get(key);
    }

    /**
     *功能描述: 实现命令:INCR key  增加key一次
     * @params
     * @return long
     */
    public long  incr(String key,long delta){
        return  redisTemplate.opsForValue().increment(key,delta);
    }
    /**
     *功能描述: 实现命令:KEYS pattern ,查找所有符合给定模式 pattern的key
     * @params
     * @return java.util.Set<java.lang.String>
     */
    public Set<String> keys(String pattern){
        return redisTemplate.keys(pattern);
    }

    /**
     *功能描述: 实现命令 SET key value,设置一个key-value(将字符串值value 关联道key)
     * @params
     * @return void
     */
    public void set(String key,String value){
        redisTemplate.opsForValue().set(key, value);
    }
    /**
     *功能描述: 实现命令: SET key value EX seconds ,设置key-value和超时时间(秒)
     * @params
     * @return void
     */
   public void set(String key,String value,long timeout){
        redisTemplate.opsForValue().set(key, value, timeout,TimeUnit.SECONDS);
   }
    /**
     *功能描述: 实现命令 TTL key,以秒为单位,返回给定key的剩余生存时间(TTL,time to live)
     * @params
     * @return long
     */
    public long ttl(String key){
        return redisTemplate.getExpire(key);
    }
//=====哈希表
    /**
     *功能描述: 实现命令:HSET key field value ,将哈希表key中的域 field的值设置为value
     * @params
     * @return void
     */
    public void hset(String key,String field,Object value){
          redisTemplate.opsForHash().put(key,field,value);
    }
    /**
     *功能描述: HGET key field ,返回哈希表 key中给定域field的值
     * @params
     * @return
     */
    public String hget(String key,String field){
        return (String)redisTemplate.opsForHash().get(key,field);
    }
    /**
     *功能描述: 实现命令:HDEL key field[field...],删除哈希表key中的一个或多个指定域,不存在
     * @params
     * @return
     */
    public void hdel(String key,Object...fielde){
        redisTemplate.opsForHash().delete(key,fielde);
    }
    /**
     *功能描述: 实现命令:HGTALL key,返回哈希表key中,所有的域和值。
     * @params
     * @return
     */
    public Map<Object,Object> hgetall(String key){
        return redisTemplate.opsForHash().entries(key);
    }
//======list列表
    /**
     *功能描述: 实现命令:LPUSH key value,将一个值 value 插入道列表key的表头
     * @params
     * @return long
     */
    public long lpush(String key,String value){
        return redisTemplate.opsForList().leftPush(key,value);
    }
    /**
     *功能描述: 实现命令:LPOP key ,移除并返回列表key的头元素
     * @params
     * @return java.lang.String
     */
    public String lpop(String key){
        return  (String)redisTemplate.opsForList().leftPop(key);
    }
    /**
     *功能描述: 实现命令:RPUSH key value ,将一个值value插入到列表key的表尾(最右边)
     * @author zhangxin
     * @date 2023/9/19
     * @params
     * @return long
     */
    public long rpush(String key,String value){
        return redisTemplate.opsForList().rightPush(key, value);
    }

}

调用方法:

package com.imooc.controller;

import com.imooc.pojo.Users;
import com.imooc.pojo.vo.UsersVO;
import com.imooc.utils.RedisOperator;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;

import java.util.UUID;

@Controller
public class BaseController {
   
    @Autowired
    private RedisOperator redisOperator;

    public UsersVO conventUsersVO(Users user){
        // 实现用户的redis会话
        String uniqueToken = UUID.randomUUID().toString().trim();

        redisOperator.set(REDIS_USER_TOKEN +":" + user.getId(),uniqueToken);
        UsersVO usersVO = new UsersVO();
        //a拷贝到b
        BeanUtils.copyProperties(user,usersVO);
        usersVO.setUserUniqueToken(uniqueToken);
        return usersVO;
    }
}


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多