目录
Redis基础操作
java中的i++是不是原子操作?不是
数据类型
1. list
2. set
3. Hash哈希
4. Zset有序集合
Redis基础操作
set [key] [value] 设置值 (设置相同的会将原先的覆盖)
get [key] 获取值
不能覆盖和替换
ttl [key] 以秒为单位返回 key 的剩余过期时间。
java中的i++是不是原子操作?
不是原子操作
i=0,两个贤臣分别对i进行++100次。值是多少?2~200
i++要经过 取值,++,赋值这三个步骤
a线程最后i=1是取值,取的是b中的值,然后必须经过这三个步骤,接下来就是++,和赋值了,那么就是2了。
数据类型
1. list
按着索引下标获得元素(从左到右)
l
list的数据结构
2. set
自动排序
不会出现重复数据
可以判断某个数据是否再set集合中sismember
string类型的无序集合
地城hash表
常见命令
3. Hash哈希
通过key和field(属性标签)就可以操作对应的属性数据,既不需要重复存储数据,也不会带来序列化和并发修改的问题。
数据量少用ziplist
数据量大用hashtable
常见命令
4. Zset有序集合
有序集合
没有重读元素的字符串集合
每个成员都关联了一个分数(score)按分数从低到高排序
两个数据结构:
1.hash
关联元素value和score,保障元素value的唯一性。通过value找到对应的score
field对应value
value对应score
2. 跳跃表
跳跃表的目的在于给元素 value 排序,根据 score 的范围获取元素列表。
通过跳跃表快速定位元素
从最上面一层开始找 如下表所示,从第二层开始。