Redis 数据结构
结构类型 |
结构存储的值 |
结构的读写能力 |
---|---|---|
String | 可以是字符串、整数或者浮点数 | 对整个字符串或者字符串的其中一部分执行操作;对象和浮点数执行自增(increment)或者自减(decrement) |
List | 一个链表,链表上的每个节点都包含了一个字符串 | 从链表的两端推入或者弹出元素;根据偏移量对链表进行修剪(trim);读取单个或者多个元素;根据值来查找或者移除元素 |
Set | 包含字符串的无序收集器(unorderedcollection),并且被包含的每个字符串都是独一无二的、各不相同 | 添加、获取、移除单个元素;检查一个元素是否存在于某个集合中;计算交集、并集、差集;从集合里卖弄随机获取元素 |
Hash | 包含键值对的无序散列表 | 添加、获取、移除单个键值对;获取所有键值对 |
Zset | 字符串成员(member)与浮点数分值(score)之间的有序映射,元素的排列顺序由分值的大小决定 | 添加、获取、删除单个元素;根据分值范围(range)或者成员来获取元素 |
RedisTemplate应用
Spring封装了RedisTemplate对象来进行对Redis的各种操作
public class RedisTemplate<K,V> extends RedisAccessor implements RedisOperations<K,V>, BeanClassLoaderAware
RedisTemplate常用方法
1)Boolean delete(K key) ----删除对应key的数据
2)Long delete(Collection<K> keys) ----批量删除数据
3)Boolean hasKey(K key) ----判断redis库是否存在该key
4)Boolean expire(K key,long timeout,TimeUnit unit) ----设置过期时间
timeout:过期时间
unit:时间单位
5)Boolean expireAt(K key,Date date) ----设置到date时间点过期
6)Long getExpire(K key) ----获取过期时间
7)Set<K> keys(K pattern) ----获取符合条件的所有key
pattern:通配条件 (* 号是通配符)
eg:keys("*") ——查询所有的key值
keys("a*") ——查询以a开头的所有key
8)void rename(K oldKey, K newKey) ----key值重命名
9)ValueOperations<K, V> opsForValue() ----操作字符串,如下
10)ListOperations<K, V> opsForList() ----操作list,如下
11)SetOperations<K, V> opsForSet() ----操作set,如下
12)ZSetOperations<K, V> opsForZSet() ----操作zset,如下
*) boundValueOps(K key),boundListOps(K key)…… ----bound与以下五种方法操作类似,bound是对相应key的数据操作,以下是对所有操作
RedisTemplate中定义了对5种数据结构操作
redisTemplate.opsForValue();//操作字符串 redisTemplate.opsForHash();//操作hash redisTemplate.opsForList();//操作list redisTemplate.opsForSet();//操作set redisTemplate.opsForZSet();//操作有序set
RedisTemplate对五种数据类型操控
一、Redis的String数据结构 (推荐使用StringRedisTemplate)
注意:如果使用RedisTemplate需要更改序列化方式
public interface ValueOperations<K,V> -->ValueOperations可以对String数据结构进行操作
1、插入数据
1)void set( K key, V value)
key:储存键; value:储存值
使用:redisTemplate.opsForValue().set("name","tom");
结果:redisTemplate.opsForValue().get("name")
输出结果为tom
2)void set(K key, V value, long timeout, TimeUnit unit)
timeout:过期时间; unit:时间单位
使用:redisTemplate.opsForValue().set("name","tom",10, TimeUnit.SECONDS);
结果:redisTemplate.opsForValue().get("name")由于设置的是10秒失效,十秒之内查询有结果,十秒之后返回为null
3)void set(K key, V value, long offset) ----该方法是用 value 参数覆写(ov