redis学习入门
Tags: redis
redis中的数据结构
关于keys的几条规则 (没有限制中的限制)
- 太长的键值不是个好主意,例如1024字节的键值就不是个好注意,不仅消耗内存,而且在数据中查找这类键值的计算成本很高。
- 太短的键值通常也不是好主意,使用“u:1000:pwd”代替“user:1000:password”没有什么问题,但后者更易阅读。根据业务需求,如果预计此类keys的数据量很大,使用简化的第一种方案也是不错的选择。
- 最好坚持一种模式。例如:”object-type????field”就是个不错的注意,像这样”user:1000:password”。我喜欢对多单词的字段名中加上一个点,就像这样:”commentreply.to”。
-
字符串(strings)
普通的k-v键值对
{
key1:value,
key2:value,
....
}
- 列表(List)
这种数据结构基于Linked List实现,常用来做队列
优点:插入时复杂度相同
缺点:按索引读取慢
{
key1:[value1,value2,value3,...], //json格式只能使用数组方式表示
key2:[value1,value2,value3,...],
...
}
-
散列(hash)
嵌套的k-v对
{
key1:{
key1:value1,
key2:value2,
...
},
key2:{
key1:value1,
key2:value2,
...
},
...
}
-
集合(sets)
value是集合类型,元素值都是唯一的,redis会自动去重,所有的value是无序排列的
{
key1:[value1,value3,value2], //集合里面的元素不能重复
key2:[value3,value2,value1],
...
}
-
有序集合(Sorted sets)
value是集合类型,元素值都是唯一的,redis会自动去重,所有的value是有序排列的
{
key1:[value1,value2,value3], //集合里面的元素不能重复,且有序
key2:[value1,value3,value3],
...
}