使用 randomKey 方法从 Redis 密钥空间随机返回一个键。方法定义如下:
K randomKey() 从密钥空间返回一个随机键。
示例:
// 初始化数据 ValueOperations<String,String> ops = redisTemplate.opsForValue(); for(int i = 0; i < 10; i++) { ops.set("key" + i, UUID.randomUUID().toString()); } // 随机获取键5个键 for(int i = 0; i < 5; i++) { String key = redisTemplate.randomKey(); String value = ops.get(key); System.out.println(i + " => " + key + " = " + value); }
运行示例,输出结果:
0 => key7 = 3b5b8ef4-b854-42b9-8e16-c48662436089 1 => key9 = c3dd2c47-cb70-4248-a582-1904c849254a 2 => key1 = f5e2d67e-f429-424f-aafc-fc23a291ea0d 3 => key6 = 2a6a0a98-0d0e-456c-8a35-199738ed8f14 4 => key6 = 2a6a0a98-0d0e-456c-8a35-199738ed8f14
上述代码可知,我们写入 5 个键到 Redis,然后使用 randomKey 方法随机从这 5 个键中返回一个。
可以通过 rename 方法重命名指定的键,方法定义如下:
void rename(K oldKey, K newKey) 将键 oldKey 重命名为 newKey。
Boolean renameIfAbsent(K oldKey, K newKey) 仅当 newKey 不存在时,才将键 oleName 重命名为 newKey。
示例:
// 初始化数据 redisTemplate.boundValueOps("rename-key").set("hello world"); System.out.println("rename-key = " + redisTemplate.boundValueOps("rename-key").get()); // 重命名键 redisTemplate.rename("rename-key", "new-rename-key"); System.out.println("rename-key = " + redisTemplate.boundValueOps("rename-key").get()); System.out.println("new-rename-key = " + redisTemplate.boundValueOps("new-rename-key").get());
运行示例,输出结果:
rename-key = hello world rename-key = null new-rename-key = hello world
可以使用 persist 方法将指定键的过期时间清除掉,方法定义如下:
Boolean persist(K key) 移除指定键的过期时间
示例:
// 初始化数据 redisTemplate.boundValueOps("persist-key").set("hello world"); // 设置 persist-key 键的过期时间为 10 分钟 redisTemplate.expire("persist-key", 10, TimeUnit.MINUTES); System.out.println("expire = " + redisTemplate.getExpire("persist-key", TimeUnit.MINUTES)); // 清除过期时间 redisTemplate.persist("persist-key"); // 获取过期时间 System.out.println("expire = " + redisTemplate.getExpire("persist-key", TimeUnit.MINUTES));
运行示例,输出结果:
expire = 9 expire = -1
在 RedisTemplate 中,可以使用 dump() 和 restore() 方法备份和恢复指定键的值。方法定义如下:
byte[] dump(K key) 执行 Redis dump 命令并返回结果
void restore(K key, byte[] value, long timeToLive, TimeUnit unit) 执行 Redis restore 命令,恢复数据到指定的键
示例:
ValueOperations<String,String> ops = redisTemplate.opsForValue(); ops.set("dump-key", "This is a piece of test data."); // 数据备份 byte[] dumpData = redisTemplate.dump("dump-key"); // 恢复数据 redisTemplate.restore("dump-key-bak", dumpData, 1000, TimeUnit.SECONDS); // 获取恢复的数据 String bakVal = ops.get("dump-key-bak"); System.out.println("bakVal = " + bakVal);
运行示例,输出如下:
bakVal = This is a piece of test data.
使用 getClientList() 方法获取客户端连接信息对象 RedisClientInfo,而 RedisClientInfo 提供有关客户端连接的一般和统计信息。方法定义如下:
List<RedisClientInfo> getClientList()
示例:
List<RedisClientInfo> clientInfos = redisTemplate.getClientList(); for(RedisClientInfo clientInfo : clientInfos) { System.out.println(clientInfo); }
运行示例,输出如下:
{sub=0, flags=N, multi=-1, qbuf=0, id=5, addr=127.0.0.1:1117, events=r, psub=0, idle=0, qbuf-free=32768, oll=0, omem=0, name=, obl=0, cmd=client, fd=10, age=1, db=1}