String
一个key对应一个value value字符串小于1M时,加倍扩容 大于1M时,加1M
是二进制安全的,可以包含任何数据,jpg图片或者序列化对象
一个redis字符串value最多可以是512M
set k1 v100
get k1 得到k1的值 v100
set k1 v1100 会覆盖v100的值
append k1 abc 拼接v100 返回k1的长度
strlen k1 查看k1的长度
setnx 只有key不存在才能设置key 错误返回0 成功返回ok
incr k1 值加一 返回值
decr k1 值减一
incrby k4 10 k4的值加10
decrby k4 5 k4的值减5
原子 *** 作:不会被线程调度机制打断的 *** 作 一旦开始,就一直运行到结束,不会有任何context switch(切换到另一个线程)
在单线程中,能够在单条指令完成的 *** 作都可以认为是原子 *** 作
java中的i++不是原子 *** 作
题目:i=0,两个线程进行 i++ 100次,值是2-200
i++ 取值 -----> ++ -----> 赋值
mset k1 v1 k2 v2 k3 v3 设置多个key-value
mget k1 k2 k3 得到多个key的值
msetnx k11 v11 k12 v12 如果有一个key存在,则不成功,返回0,成功返回1(原子性)
getrange name 0 3 拿到value中0-3的值 获取范围值
setrange name 3 abc 在第三位置设置值 原本为aqyayyaya 设置后为aqyabcaya
setex age 20 value30 设置键值的同时设置时间 setex 《key》 时间 《vakue》
getset name java 用新值换旧值 返回原来的值
List
单键多值 是字符串列表,按照插入顺序排序,底层是双向列表,对两端的 *** 作性能很高 查找中间性能差
数据结构为quickList(多个压缩链表构成)
redis将链表和ziplist结合起来组成quickList,就是将多个zipList使用双向指针串起来使用,既满足插入删除功能,也避免出现太大冗余
name Jack lusy aqya
常用命令
lpush k1 v1 v2 v3 从左边加
lrange k1 0 -1 查看所有值 得出结果为 v3 v2 v1
rpush k2 v1 v2 v3 从右边加
lpop k1 得到v3
rpop k1 得到v1 从左边或者右边吐出值 吐出后消失
rpoplpush 《k1》 《k2》 从k1列表的右边吐出值,插入到k2列表左边
lindex k1 0 按照索引查值
llen k1 获取列表长度
linsert key after/before value1 value 在value值前面或者后面插入值 linsert k2 after "v22" "v22after"
lrem key n value 从左边删除n个value(从左到右)
lset key index value 将列表key下标为index的值替换成value
集合Set
类似于List,自动排重,不能重复,无序,底层是value为null的 hash表,时间复杂度为O(n)
内部使用hash,所有的value都指向同一个内部值
sadd k1 v1 v2 v3 添加值
smembers k1 取出k1 的值
sismember k1 v1 是否存在v1 存在返回值为1 不存在返回0
scard k1 k1元素的个数
srem k1 v1 v2 删除集合的某个元素 删除v1 v2
spop k1 随机吐出一个value
srandmember k2 n 随机取n个值(不删)
smove k1 k2 v3 将k1中的v3移入k2
sinter k2 k3 查找两个集合交集
sunion k2 k3 查找两个集合并集
sdiff k2 k3 查找两个集合差集 查找k2里面没有k3的值的集合(补集)
hash
键值对集合
对应的是zipList(压缩列表) hashtable(哈希表) 当field-value长度短时使用ziplist 否则使用hashtable
value是一个映射表 时候存储对象
常用命令
hset user id 1 设置user的id为1
hset user name zhangsan 设置user的name为zhangsan
hget user id 得到user的id
hget user name 得到user的name
hmset user:102 id 1 name lisi age 30 写入多条数据
hexists user:102 id 在user:102是否存在id 存在返回1 不存在返回0
hkeys user:102 查出所有field
hvals user:102 查出所有value
hincrby user:102 age 3 将age的值加3
hsetnx user:102 gender 1 加入不存在的field的值
Zset
有序集合
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)