零:在test测试类下创建一个类
@SpringBootTest
public class SpringDateRedisTest {
...
}
一:五大操作类型
@Autowired
private RedisTemplate redisTemplate;
@Test
public void testRedisTemplate() {
System.out.println(redisTemplate);
ValueOperations valueOperations = redisTemplate.opsForValue(); //操作字符串类型数据
HashOperations hashOperations = redisTemplate.opsForHash(); //操作哈希类型的数据
ZSetOperations zSetOperations = redisTemplate.opsForZSet(); //操作zset
ListOperations listOperations = redisTemplate.opsForList(); //操作list集合类型数据
SetOperations setOperations = redisTemplate.opsForSet(); //操作set
}
二:操作字符串的数据
@Test
public void testString() {
// set get 设置键值对并获取值
redisTemplate.opsForValue().set("city", "北京");
String city = (String) redisTemplate.opsForValue().get("city");
System.out.println(city);
// setex 设置保存时间:3分钟
redisTemplate.opsForValue().set("code", "1234", 3, TimeUnit.MINUTES);
// setnx 如果键不存在,则设置键值对
redisTemplate.opsForValue().setIfAbsent("lock", 1);
redisTemplate.opsForValue().setIfAbsent("lock", 2);
}
三:操作哈希类型的数据
@Test
public void testHash() {
// hset 添加哈希字段和值
HashOperations hashOperations = redisTemplate.opsForHash();
hashOperations.put("100", "name", "zhangsan");
hashOperations.put("100", "age", "18");
// hget 获取哈希字段的值
String name = (String) hashOperations.get("user:1", "name");
System.out.println(name);
// hkeys 获取哈希的所有字段
Set keys = hashOperations.keys("100");
System.out.println(keys);
// hvals 获取哈希的所有值
List values = hashOperations.values("100");
System.out.println(values);
// hdel 删除哈希字段
hashOperations.delete("100", "age");
}
四:操作list集合类型的数据
@Test
public void testList() {
// lpush 将元素从左侧插入列表
ListOperations listOperations = redisTemplate.opsForList();
listOperations.leftPushAll("list", "a", "b", "c");
listOperations.leftPush("list", "d");
// lrange 获取列表指定范围的元素
List list = listOperations.range("list", 0, -1);
System.out.println(list);
// lpop 从右侧弹出列表的元素a
Object list1 = listOperations.rightPop("list");
System.out.println(list1);
// llen 获取列表的长度
Long size = listOperations.size("list");
System.out.println(size);
}
五:操作set集合类型的数据
@Test
public void testSet() {
//sadd 添加元素到集合
SetOperations setOperations = redisTemplate.opsForSet();
setOperations.add("set1", "a", "b", "c", "d");
setOperations.add("set2", "a", "b", "x", "y");
//smembers 获取集合的所有元素
Set members = setOperations.members("set1");
System.out.println(members);
//scard 获取集合的长度
Long size = setOperations.size("set1");
System.out.println(size);
//sinter 求交集
Set intersect = setOperations.intersect("set1", "set2");
System.out.println(intersect);
//sunion 求并集
Set union = setOperations.union("set1", "set2");
System.out.println(union);
//srem 删除集合中的元素
setOperations.remove("set1", "a","b");
}
六:操作zset类型的数据
@Test
public void testZset() {
//zadd 添加元素到zset
ZSetOperations zSetOperations = redisTemplate.opsForZSet();
zSetOperations.add("zset", "a", 10);
zSetOperations.add("zset", "b", 12);
zSetOperations.add("zset", "c", 9);
//zrange 获取指定范围的元素
Set range = zSetOperations.range("zset", 0, -1);
System.out.println(range);
//zincrby 根据元素的分数进行排序,并返回元素
zSetOperations.incrementScore("zset", "c", 10);
//zcrem 删除元素
zSetOperations.remove("zset", "a", "b");
}
七:操作通用类型的数据
@Test
public void testCommand() {
//keys 获取所有键
Set keys = redisTemplate.keys("*");
System.out.println(keys);
//exists 判断键是否存在
Boolean name = redisTemplate.hasKey("name");
Boolean set1 = redisTemplate.hasKey("set1");
System.out.println(name);
System.out.println(set1);
//type 获取键的类型
for (Object key: keys){
DataType type = redisTemplate.type(key);
System.out.println(type.name());
}
//del 删除键
redisTemplate.delete("set1");
}