一:配置类
原因:
因为redis的存贮是二进制的,所以拿出的数据仍然是二进制的。为了方便阅读,我们写了一个redis的配置类。
@Configuration
public class RedisConfiguration {
@Bean
public RedisTemplate<String, Serializable> redisTemplate
(RedisConnectionFactory redisConnectionFactory){
RedisTemplate<String,Serializable> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(redisConnectionFactory);
redisTemplate.setKeySerializer(RedisSerializer.string());
redisTemplate.setValueSerializer(RedisSerializer.json());
redisTemplate.setHashKeySerializer(RedisSerializer.string());
redisTemplate.setHashValueSerializer(RedisSerializer.json());
return redisTemplate;
}
}
调用 因为配置类的名字是redisTempla调用的也是它(其实我也不清楚,但就是这么用的,后期有时间在研究2023.11.15)
ValueOperations<String, Serializable> operations = redisTemplate.opsForValue();
operations.set("username7","girl");
redisTemplate.expire("username7", times,TimeUnit.SECONDS);
一些小工具命令
keys * ##查看所有的key
TTL key ##查看key 的过期时间
List的数据管理
指令框的一些常见命令
LPUSH(lpush) key value [value...] 将一个或多个值插入到列表key的表头,从左边开始插入
RPUSH(rpush) ..... 从右边插入
LPOP key ## 移除左边的第一个元素
RPOP key
LRANGE key start stop 查看数据 若是从0 -1 可以查看所有key列表中的数据
在编程中使用list集合的一些数据,往redis里面存入list集合的数据的代码
ListOperations<String,Serializable> operations = redisTemplate.opsForList();
List<User> userList = new ArrayList<>();
for (int i=1;i<=10000;i++){
User user = new User();
user.setUsername("测试者"+i);
user.setPhone("130"+i+i+i+i+"9936");
user.setAge(i);
user.setAddress("30"+i);
userList.add(user);
}
ListOperations<String,Serializable> operations = redisTemplate.opsForList();
for (User user : userList){
operations.rightPush("user-list",user);
}
Set数据操作
常用命令
sadd key member [] ##向集合添加多个数据
scard key ##获取集合的大小
smembers key ##获取集合中所有的成员变量
sismember key member ## 判断成员是否在集合里面
srem key member [] ##从集合中移除一个或多个成员
spop key [] ##随机移除集合中的一个或多个成员
srandmember key [] ##随机获取集合中的一个或多个成员,但不移除它们
sunion key [] ##获取多个集合的并集
sinter key [] ##获取多个集合的交集
存储set集合的数据使用的类
SetOperations<String, Serializable> opsForSet = redisTemplate.opsForSet();
获取set集合中的数据
SetOperations<String, Serializable> opsForSet = redisTemplate.opsForSet();
Set members = opsForSet.members("string-set");
Set<String> members1 = members;
for (String s : members1){
System.out.println(s);
}
注意Set members = opsForSet.members(“string-set”);这里的Set并没有<> 因为可以省略。
Hash数据操作
常用命令
HSET key field value # 设置哈希字段的字符串值
HSET user:1000 username "johnsmith"
HGET key field #获取哈希字段的值
HGET user:1000 username
HMSET key field1 value1 field2 value2 ...#设置多个哈希字段
HMSET user:1000 username "johnsmith" email "john@example.com"
HMGET key field1 field2 ... #获取多个哈希字段值
HMGET user:1000 username email
HDEL key field1 field2 ... #删除一个或者多个哈希字段
HDEL user:1000 email
HGETALL key #获取所有字段值
HGETALL user:1000
hash使用的类
HashOperations<String, Object, Object> operations = redisTemplate.opsForHash();
User user = new User();
user.setPhone("13014019936");
user.setAddress("hchchc");
user.setUsername("hc");
user.setAge(23);
Map<String,Object> map = BeanUtil.beanToMap(user);
HashOperations<String, Object, Object> operations = redisTemplate.opsForHash();
operations.putAll("loginInfo2",map);
HashOperations<String,Object,Object> operations = redisTemplate.opsForHash();
Map<Object, Object> loginInfo2 = operations.entries("loginInfo2");
System.out.println(loginInfo2);