redis的数据结构
redis可以存储五种类型的数据结构
1.String
String是redis最基本的存储类型,一个key对应一个value,数据库存储格式如下
![](https://i-blog.csdnimg.cn/blog_migrate/96511eeefdeec98563e6302d0a550ff8.png)
@Autowired
open lateinit var resdisTemple: RedisTemplate<String,String>
resdisTemple.opsForValue() 方法返回 ValueOperations<K, V>接口
//字符串操作接口 里面提供了大量关于字符串类型的操作接口,这里就不一一列举
public interface ValueOperations<K, V> {}
//保存操作
resdisTemple.opsForValue().set("redisString","redis-string")
//查询操作
resdisTemple.opsForValue().get("redisString")
。。。
2.List集合
Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边),存储格式如下(注意list中可以存储重复的元素)
![](https://i-blog.csdnimg.cn/blog_migrate/379ec416384052b5dd8098d0e5c8d009.png)
//方法返回一个接口
resdisTemple.opsForList()
//该接口提供了一系列操作list集合的接口
public ListOperations<K, V> opsForList() {}
//插入数据
resdisTemple.opsForList().rightPushAll("redisList", listOf("age","sex","boy"))
//随机移除一个元素
resdisTemple.opsForList().rightPop("redisList")
//从左边插入一个元素
resdisTemple.opsForList().leftPush("redisList","edg")
//在左边指定位置插入元素
resdisTemple.opsForList().leftPush("gdd","sex","rng")
。。。
3.hash
hash是一个用来存储键值对集合,适合用来存储对象,在redis中的数据结构如下
resdisTemple.opsForHash() 返回HashOperations<H, HK, HV>()提供了对hash结构的操作接口
public interface HashOperations<H, HK, HV> {}
//存储
resdisTemple.opsForHash<String,String>().put("redisHash","name","tom")
//获取多个值
resdisTemple.opsForHash<String,String>().multiGet("redisHash",listOf("aget1","aget")).toString()
//返回值对
Map<HK, HV> entries(H key)
4.Set
Redis的Set是string类型的无序集合。
集合是通过哈希表实现,添加,删除,查找的复杂度都是O(1)。数据库存储如下
Set集合元素不能重复
//操作Set集合的方法
resdisTemple.opsForSet()
//提供操作Set集合的接口
public SetOperations<K, V> opsForSet() {}
//新增
add("redisSet", "dog")
//删除某个元素
remove("redisSet","dog")
。。。
5.Zset
Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
zset的成员是唯一的,但分数(score)却可以重复。存储结构如下
![](https://i-blog.csdnimg.cn/blog_migrate/a3a6ce892619c00d77758eade14a7779.png)
//操作Zset的接口
public ZSetOperations<K, V> opsForZSet() {}
//新增
resdisTemple.opsForZSet().add("redisZset","zset-1",1.0)