Redis 常用数据类型的操作步骤(代码实操)

Redis 常用数据类型的操作步骤

1. 注入 RedisTemplate 对象
@Autowired
private RedisTemplate redisTemplate;

用于在测试类中注入 RedisTemplate 对象,以便进行 Redis 操作。

2. 操作字符串类型的数据
@Test
public void testString() {
    // set get setex setnx

    ValueOperations valueOperations = redisTemplate.opsForValue();

    // set
    // 使用 set 方法将键名为 "city" 的字符串类型键设置为值为 "北京"
    valueOperations.set("city", "北京");

    // get
    // 使用 get 方法获取键名为 "city" 的字符串类型键的值,并将其转换为字符串类型
    String city = (String) valueOperations.get("city");
    System.out.println(city);

    // setex
    // 使用 set 方法设置键名为 "code" 的字符串类型键的值为 "1234",并设置其在 3 分钟后过期
    valueOperations.set("code", "1234", 3, TimeUnit.MINUTES);

    // setnx
    // 使用 setIfAbsent 方法若键名为 "lock" 不存在,则将其值设置为 1
    valueOperations.setIfAbsent("lock", 1);
    // 若键名为 "lock" 已存在,则不进行任何操作
    valueOperations.setIfAbsent("lock", 2);
}
3. 操作哈希类型的数据
@Test
public void testHash() {
    // hset hget hdel hkeys hvals

    HashOperations hashOperations = redisTemplate.opsForHash();

    // hset 向哈希表中存入数据
    hashOperations.put("user", "name", "张三");
    hashOperations.put("user", "sex", "男");

    // hget 获取哈希表中指定字段的值
    String name = (String) hashOperations.get("user", "name");
    System.out.println(name);

    // hdel 删除哈希表中的一个或多个指定字段
    hashOperations.delete("user", "name");

    // hkeys 获取哈希表中所有的字段
    Set keys = hashOperations.keys("user");
    keys.forEach(System.out::println);

    // hvals 获取哈希表中所有字段的值
    List values = hashOperations.values("user");
    values.forEach(System.out::println);
}
4. 操作列表类型的数据
@Test
public void testList() {
    // lpush lrange rpop llen

    ListOperations listOperations = redisTemplate.opsForList();

    // lpush 从列表左侧插入一个或多个元素
    listOperations.leftPushAll("mylist", "a" , "b", "c");
    listOperations.leftPush("mylist", "d");

    // lrange 获取列表中的所有元素
    List list = listOperations.range("mylist", 0, -1);
    list.forEach(System.out::println);

    // rpop 移除并返回列表的最后一个元素
    listOperations.rightPop("mylist");

    // llen 获取列表的长度
    Long mylist = listOperations.size("mylist");
    System.out.println(mylist);
}
5. 操作集合类型的数据
@Test
public void testSet() {
    // sadd smembers scard sinter sunion srem

    SetOperations setOperations = redisTemplate.opsForSet();

    // sadd 向集合中添加元素
    setOperations.add("myset1", "a", "b", "c", "d");
    setOperations.add("myset2", "a", "b", "x", "y");

    // smembers 获取集合中的所有元素
    Set myset1 = setOperations.members("myset1");
    myset1.forEach(System.out::println);

    // scard 获取集合中的元素个数
    Long myset2 = setOperations.size("myset2");
    System.out.println(myset2);

    // sinter 求两个集合的交集
    Set intersect = setOperations.intersect("myset1", "myset2");
    System.out.println(intersect);

    // sunion 求两个集合的并集
    Set union = setOperations.union("myset1", "myset2");
    System.out.println(union);

    // srem 从集合中移除元素
    setOperations.remove("myset1", "a", "b");
}
6. 操作有序集合类型的数据
@Test
public void testZset() {
    // zadd zrange zincrby zrem

    ZSetOperations zSetOperations = redisTemplate.opsForZSet();

    // zadd 向有序集合中添加元素,并指定分值
    zSetOperations.add("zset1", "a", 10);
    zSetOperations.add("zset1", "b", 12);
    zSetOperations.add("zset1", "c", 9);

    // zrange 获取有序集合的指定范围内的元素
    Set zset1 = zSetOperations.range("zset1", 0, -1);
    System.out.println(zset1);

    // zincrby 为有序集合中的元素增加分值
    zSetOperations.incrementScore("zset1", "c", 10);

    // zrem 从有序集合中移除元素
    zSetOperations.remove("zset1", "a", "b");
}
7. 通用命令操作
@Test
public void testCommon() {
    // keys exists type del

    // keys 获取所有键
    Set keys = redisTemplate.keys("*");
    System.out.println(keys);

    // exists 检查键是否存在
    Boolean name = redisTemplate.hasKey("name");
    Boolean myset1 = redisTemplate.hasKey("myset1");
    System.out.println(name);
    System.out.println(myset1);

    // type 获取键所对应的值的数据类型
    keys.forEach(key -> {
        DataType type = redisTemplate.type(key);
        System.out.println(type);
    });

    // del 删除键
    redisTemplate.delete("myset2");
}
  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值