RedisTemplate使用
提示:redis的各种类型以及使用手册网址:https://www.redis.net.cn/order/
//redisTemplate.opsForValue().set("stringValue","bbb");
ValueOperations<String, String> operations = redisTemplate.opsForValue();
// 1、set(K key, V value) 新增一个字符串类型的值,key是键,value是值
operations.set("stringValue", "bbb");
// 2、get(Object key) 获取key键对应的值。
operations.get("stringValue");
log.info("取出的字符串:{}", operations.get("stringValue"));
// 3、append(K key, String value) 在原有的值基础上新增字符串到末尾
operations.append("stringValue", "appendStr");
log.info("取出append的之后的字符串:{}", operations.get("stringValue"));
// 4、get(K key, long start, long end) 截取key键对应值得字符串,从开始下标位置开始到结束下标的位置(包含结束下标)的字符串
operations.get("stringValue", 0, 3);
log.info("取出截取key键对应值得字符串:{}", operations.get("stringValue", 0, 3));
// 5、getAndSet(K key, V value) 获取原来key键对应的值并重新赋新值
log.info("获取原来key键对应的值并重新赋新值:{}", operations.getAndSet("stringValue", "newString"));
log.info("取出new字符串:{}", operations.get("stringValue"));
// 6、setBit(K key, long offset, boolean value) key键对应的值value对应的ascii码,在offset的位置(从左向右数)变为value
operations.setBit("stringValue", 1, false);
operations.get("stringValue");
log.info("通过setBit(K key,long offset,boolean value)方法修改过后的值:{}", operations.get("stringValue"));
// 7、getBit(K key, long offset) 判断指定的位置ASCII码的bit位是否为1
operations.getBit("stringValue", 1);
log.info("通过getBit(K key,long offset)方法判断指定bit位的值是:{}", operations.getBit("stringValue", 1));
// 8、size(K key) 获取指定字符串的长度
log.info("通过size(K key)方法获取字符串的长度:[{},{}]", operations.get("stringValue"), operations.size("stringValue"));
// 9、increment(K key, double delta) 以增量的方式将double值存储在变量中
operations.increment("doubleKey", 5);
log.info("通过increment(K key, double delta)方法以增量方式存储double值:{}", operations.get("doubleKey"));
// 10、increment(K key, long delta) 以增量的方式将long值存储在变量中
operations.increment("longKey", 6);
log.info("通过increment(K key, long delta)方法以增量方式存储long值:{}", operations.get("longKey"));
// 11、setIfAbsent(K key, V value) 如果键不存在则新增,存在则不改变已经有的值
boolean absentBoolean = operations.setIfAbsent("absentKey", "fff");
log.info("通过setIfAbsent(K key, V value)方法判断变量值absentValue是否存在::{}", absentBoolean);
if (absentBoolean) {
String absentValue = operations.get("absentKey");
log.info(",不存在,则新增后的值是:{}", absentValue);
boolean existBoolean = redisTemplate.opsForValue().setIfAbsent("absentKey", "eee");
log.info(",再次调用setIfAbsent(K key, V value)判断absentValue是否存在并重新赋值:{}", existBoolean);
if (!existBoolean) {
absentValue = operations.get("absentKey") + "";
log.info("如果存在,则重新赋值后的absentValue变量的值是:{}", absentValue);
}
}
// 12、set(K key, V value, long timeout, TimeUnit unit) 设置变量值的过期时间
operations.set("absentKey", "eee", 5, TimeUnit.SECONDS);
String timeOutValue = redisTemplate.opsForValue().get("absentKey") + "";
log.info("通过set(K key, V value, long timeout, TimeUnit unit)方法设置过期时间, 过期之前获取的数据:{}", timeOutValue);
Thread.sleep(5 * 1000);
timeOutValue = operations.get("absentKey") + "";
log.info("等待10s过后,获取的值:{}", timeOutValue);
// 13、set(K key, V value, long offset) 覆盖从指定位置开始的值
redisTemplate.opsForValue().set("newabsentKey", "newabsentKey");
redisTemplate.opsForValue().set("newabsentKey", "dd", 1);
String overrideString = operations.get("newabsentKey");
log.info("通过set(K key, V value, long offset)方法覆盖部分的值:{}", overrideString);
// 14、multiSet(Map<? extends K,? extends V> map) 设置map集合到redis
Map valueMap = new HashMap();
valueMap.put("valueMap1", "map1");
valueMap.put("valueMap2", "map2");
valueMap.put("valueMap3", "map3");
operations.multiSet(valueMap);
// 15、multiGet(Collection<K> keys) 根据集合取出对应的value值 ,根据List集合取出对应的value值
List paraList = new ArrayList();
paraList.add("valueMap1");
paraList.add("valueMap2");
paraList.add("valueMap3");
List<String> valueList = operations.multiGet(paraList);
for (String value : valueList) {
log.info("通过multiGet(Collection<K> keys)方法获取map值:{}" + value);
log.info("通过set(K key, V value, long offset)方法覆盖部分的值:{}", overrideString);
}
// 16、multiSetIfAbsent(Map<? extends K,? extends V> map)
valueMap = new HashMap();
valueMap.put("valueMap1", "map11");
valueMap.put("valueMap2", "map22");
valueMap.put("valueMap3", "map33");
log.info("通过set(K key, V value, long offset)方法覆盖部分的值:{}", redisTemplate.opsForValue().multiSetIfAbsent(valueMap));
redisTemplate.opsForValue().multiSetIfAbsent(valueMap);
// 17、redis删除的key
Set<String> keys = redisTemplate.keys("前缀字符" + "*");
redisTemplate.delete(keys);