RedisTemplate常用函数解析和使用
1.String
操作函数
void set(K var1, V var2);
void set(K var1, V var2, long var3, TimeUnit var5);
// 是否存在值或者key
@Nullable
Boolean setIfAbsent(K var1, V var2);
// 同时设置多个键值
void multiSet(Map<? extends K, ? extends V> var1);
//t同时判断多个键值
@Nullable
Boolean multiSetIfAbsent(Map<? extends K, ? extends V> var1);
@Nullable
V get(Object var1);
// 设置键值并返回原来的键值
@Nullable
V getAndSet(K var1, V var2);
@Nullable
List<V> multiGet(Collection<K> var1);
@Nullable
Long increment(K var1, long var2);
@Nullable
Double increment(K var1, double var2);
@Nullable
Integer append(K var1, String var2);
@Nullable
String get(K var1, long var2, long var4);
// 设置键值加偏移量(原来的键值)
void set(K var1, V var2, long var3);
@Nullable
Long size(K var1);
@Nullable
Boolean setBit(K var1, long var2, boolean var4);
@Nullable
Boolean getBit(K var1, long var2);
RedisOperations<K, V> getOperations();
测试代码
@Resource
private RedisTemplate<String,Object> redisTemplate;
@Test
public void string(){
//set(name,value,time,timeUnit,offset(偏移量))
User user = new User("你好",20);
redisTemplate.opsForValue().set(user.getUsername(),user);
System.out.println(redisTemplate.opsForValue().get(user.getUsername()));
redisTemplate.opsForValue().set(user.getUsername(),user,4,TimeUnit.HOURS);
System.out.println(redisTemplate.opsForValue().get(user.getUsername()));
String name = "increment";
Long i = 10L;
redisTemplate.opsForValue().set(name,i);
redisTemplate.opsForValue().increment(name,i);
}
2.List
常用函数
//返回存储在键中的列表的指定元素。偏移开始和停止是基于零的索引,其中0是列表的第一个元素(列表的头部),1是下一个元素,-1最后一个。
@Nullable
List<V> range(K key, long start, long end);
//修剪现有列表,使其只包含指定的指定范围的元素,起始和停止都是基于0的索引
void trim(K key, long start, long end);
@Nullable
Long size(K key);
//返回的结果为推送操作后的列表的长度
@Nullable
Long leftPush(K key, V start);
@Nullable
Long leftPushAll(K key, V... start);
@Nullable
Long leftPushAll(K key, Collection<V> start);
//只有存在key对应的列表才能将这个value值插入到key所对应的列表中
@Nullable
Long leftPushIfPresent(K key, V start);
//把value值放到key对应列表中pivot值的左面,如果pivot值存在的话
@Nullable
Long leftPush(K key, V pivot, V value);
@Nullable
Long rightPush(K key, V start);
@Nullable
Long rightPushAll(K key, V... start);
@Nullable
Long rightPushAll(K key, Collection<V> start);
@Nullable
Long rightPushIfPresent(K key, V start);
//把value值放到key对应列表中pivot值的右面,如果pivot值存在的话
@Nullable
Long rightPush(K key, V pivot, V value);
void set(K key, long start, V value);
@Nullable
Long remove(K key, long start, Object object);
// 根据下标获取列表中的值
@Nullable
V index(K key, long start);
//弹出左边值。
@Nullable
V leftPop(K key);
@Nullable
V leftPop(K key, long start, TimeUnit end);
@Nullable
V rightPop(K key);
@Nullable
V rightPop(K key, long start, TimeUnit end);
// 用于移除列表的最后一个元素,并将该元素添加到另一个列表并返回
@Nullable
V rightPopAndLeftPush(K key, K start);
@Nullable
V rightPopAndLeftPush(K key, K start, long var3, TimeUnit var5);
RedisOperations<K, V> getOperations();
测试代码
@Test
public void list(){
String name = "my:listRight";
ArrayList<User> list = new ArrayList<>();
User user1 = new User("你好",20);
User user2 = new User("谢谢",23);
list.add(user1);
list.add(user2);
redisTemplate.opsForList().rightPushAll(name,user1);
redisTemplate.opsForList().rightPushAll(name,user2);
redisTemplate.opsForList().leftPop(name);
System.out.println(redisTemplate.opsForList().range(name, 0, -1));
}