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;
}
}
|