redis数据类型

redis数据类型,第1张

数据类型

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

有序集合

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/langs/725725.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-26
下一篇 2022-04-26

发表评论

登录后才能评论

评论列表(0条)

保存