Redis常用操作

常见操作类

常见操作


// ========================================
// String(opsForValue)
// ========================================


// 设置值
redisTemplate.opsForValue().set("user:1", user);

// 获取值
User user = (User) redisTemplate.opsForValue().get("user:1");

// 设置值并指定过期时间
redisTemplate.opsForValue().set("code:123", "888888", Duration.ofMinutes(5));

// 不存在时设置(NX)
Boolean success = redisTemplate.opsForValue().setIfAbsent("lock:order:1", "1", Duration.ofSeconds(30));

// 存在时设置(XX)
redisTemplate.opsForValue().setIfPresent("user:1", user);

// 获取旧值并设置新值
Object oldValue = redisTemplate.opsForValue().getAndSet("counter", 100);

// 自增
redisTemplate.opsForValue().increment("view_count");

// 自增指定值
redisTemplate.opsForValue().increment("view_count", 10);

// 自减
redisTemplate.opsForValue().decrement("view_count");

// 自减指定值
redisTemplate.opsForValue().decrement("view_count", 10);

// ========================================
// Hash(opsForHash)
// ========================================

// 设置字段
redisTemplate.opsForHash().put("user:1", "name", "Tom");

// 批量设置字段
redisTemplate.opsForHash().putAll("user:1", map);

// 获取字段
Object name = redisTemplate.opsForHash().get("user:1", "name");

// 获取多个字段
List<Object> values = redisTemplate.opsForHash().multiGet("user:1", List.of("name", "age"));

// 获取所有字段
Map<Object, Object> userMap = redisTemplate.opsForHash().entries("user:1");

// 获取所有字段名
Set<Object> fields = redisTemplate.opsForHash().keys("user:1");

// 删除字段
redisTemplate.opsForHash().delete("user:1", "name");

// 判断字段是否存在
Boolean fieldExists = redisTemplate.opsForHash().hasKey("user:1", "name");

// Hash 自增
redisTemplate.opsForHash().increment("user:1", "score", 1);

// ========================================
// List(opsForList)
// ========================================


// 左侧插入
redisTemplate.opsForList().leftPush("queue", "task1");

// 右侧插入
redisTemplate.opsForList().rightPush("queue", "task1");

// 批量右侧插入
redisTemplate.opsForList().rightPushAll("queue", List.of("a", "b", "c"));

// 左侧弹出
Object leftValue = redisTemplate.opsForList().leftPop("queue");

// 右侧弹出
Object rightValue = redisTemplate.opsForList().rightPop("queue");

// 获取指定索引
Object first = redisTemplate.opsForList().index("queue", 0);

// 获取范围
List<Object> list = redisTemplate.opsForList().range("queue", 0, -1);

// 获取长度
Long listSize = redisTemplate.opsForList().size("queue");


// ========================================
// Set(opsForSet)
// ========================================

// 添加元素
redisTemplate.opsForSet().add("online_users", 1L);

// 批量添加
redisTemplate.opsForSet().add("online_users", 1L, 2L, 3L);

// 获取所有元素
Set<Object> users = redisTemplate.opsForSet().members("online_users");

// 判断元素是否存在
Boolean memberExists = redisTemplate.opsForSet().isMember("online_users", 1L);

// 删除元素
redisTemplate.opsForSet().remove("online_users", 1L);

// 获取元素数量
Long setSize = redisTemplate.opsForSet().size("online_users");

// 随机获取元素
Object randomUser = redisTemplate.opsForSet().randomMember("online_users");

// ========================================
// ZSet(opsForZSet)
// ========================================

// 添加元素
redisTemplate.opsForZSet().add("rank", "Tom", 100);

// 增加分数
redisTemplate.opsForZSet().incrementScore("rank", "Tom", 10);

// 获取分数
Double score = redisTemplate.opsForZSet().score("rank", "Tom");

// 获取排名(升序)
Long rank = redisTemplate.opsForZSet().rank("rank", "Tom");

// 获取排名(降序)
Long reverseRank = redisTemplate.opsForZSet().reverseRank("rank", "Tom");

// 获取前10名
Set<String> top10 = redisTemplate.opsForZSet().reverseRange("rank", 0, 9);

// 删除元素
redisTemplate.opsForZSet().remove("rank", "Tom");

// ========================================
// Key 操作
// ========================================

// 判断 Key 是否存在
Boolean exists = redisTemplate.hasKey("user:1");

// 删除 Key
redisTemplate.delete("user:1");

// 批量删除
redisTemplate.delete(keys);

// 设置过期时间
redisTemplate.expire("user:1", Duration.ofHours(1));

// 获取剩余过期时间(秒)
Long ttl = redisTemplate.getExpire("user:1");

// 获取剩余过期时间(分钟)
Long ttlMinutes = redisTemplate.getExpire("user:1", TimeUnit.MINUTES);

// 移除过期时间
redisTemplate.persist("user:1");

// 重命名 Key
redisTemplate.rename("oldKey", "newKey");

// ========================================
// Lua Script
// ========================================

Long result = redisTemplate.execute(script, Collections.singletonList(key), arg1, arg2);
举报

© 著作权归作者所有


0