使用 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}