在redis 中有 5种数据类型
string
: 字符串
hash
: hash (个人理解是python中的dict)
list
: 列表
set
: 集合
zset
: 有序集合
删除
del key
string
string 字符串, 以key - value 进行存储,
set name lowang set 设置一个键值对
mset name laowang age 10 sex 男 mset 批量设置键值对
mget name age sex mget 批量获取键值对
getrange name 1 2 获取value 并切割
getset name laoli 获取完name后设置name的值
setex aaa 10 bbb 设置aaa value的值是bbb 过期时间是10秒
setnx name laoluo 当name值不存在的时候才设置键值对 name laoluo 这样就避免了值被覆盖问题
strlen name 获取当前name对应的value字符串的长度
incr age 可以给当前key对应的value值数字+1 储存格式是字符串,但是也是可以+1的, 如果储存的是非数字格式,那么会报错
append age 110 如果key不存在,那么就将添加key键值对,如果key存在,那么就将value 添加到key对应的value的后面
hash
hash 字典 在redis存储中,以字典的形式进行存储,
hset dict name laowang 设置字典,只能设置一个键值对
hmset dict name laowang age 18 sex 男 批量设置字典,key是dict value是 {"name": "老王", "age": "18", "sex": "男"}
hget dict name 获取字典对应的key-value 只能获取一个
hmget dic name id age 可以批量获取value
hgetall dict 获取所有key 和 value
hexists dict name 获取在dict字典中key是否存在,如果存在,返回1,不存在返回0
hkeys dict 获取dict 中所有的key
hsetnx dict name laowangba 如果dict中不存在key name ,那么就设置,如果存在,则不设置
hvals dict 获取dict中所有 的value值
list
lpush lists laowang laoli laozhao 添加 3个value值到lists列表中, 这样添加的方式是往前插,最后的数据在最前面
llen lists 查看当前列表有多少个数据
lindex lists 0 获取列表第0个数据,也可以使用负数(-1)这样获取的就是列表中最后一个数据
rpush lists laoluo 将数据添加到列表的最右边, 类似于python中的列表 append()添加到末尾
rpoplpush lists lists1 将lists列表中的最后一个数据移除添加到lists1列表中
lpop lists 删除列表中第一个元素数据
blpop lists 10 删除列表中第一个元素,如果列表中没有数据的话,会等待10秒,在10中有数据添加进来就删除,没有就等待完10秒后退出命令
lrem lists 1 aaaa 从列表的最左边开始找,删除一个值为 aaaa 的数据,如果 count 为0 时,会将列表中所以值为aaaa的数据删除,如果 count 是负数的话,会从右往前找数据进行删除,删除的值是负数的绝对值
ltrim lists 1 -1 将1到-1之间的数据保留,删除在这个区间外的数据
linsert lists after eee ggg 插入数据在 eee 后面插入, after(插入到元素后面)before (插入到元素前面)
lset lists 0 abcdefg 修改列表中下标为0的value的值
set
set 不能重复
sadd set laowang laoli 20 nan 设置set 集合,添加value laowang laoli 等value
sunion set 获取set集合 中所有 的value
sunion set set1 去重,获取两个集合中的数据,如果有重复的,只获取一次
scard set 获取集合中元素的数量,当集合不存在的时候返回的是0
srandmember set 10 随机获取set 集合中的10个元素,当不足10个的时候,获取所有
sinter set 获取所有数据
sinter set set1 获取两个集合中共有的数据
srem set 10 20 laowang 删除集合中的10 20 laowang value值, 如果集合中没有这几个元素,那么会返回0 如果值存在1个,则返回1,(只完成删除一个)
smove sets set 20 将set1 中的 20 value 移动添加到set集合最后
sismember set 20 查询set集合中是否有 20 这个元素
sdiff set set1 获取第一个集合中有的而第二个集合中没有的元素
sdiffstore sets set set1 将第一个集合中有的第二个集合中没有的元素sadd到sets 集合中
spop set 随机删除返回一个数据
zset
zadd myset 1 laowang 2 laoli get有序集合 myset 添加数据 1 老王 这个1 是排序,值越小的排越往前,当排序的值相同的时候redis会自动的进行排序,内部自动的将这些相同值的 value进行排序
zrange myset 0 -1 循环当前集合的值,通过下标来获取,在redis中,下标是负数的话就是从右往前,-1代表最后一个
zrange myset 0 -1 withscores 循环当前集合值和排序值(相当于权重),
zremrangebyrank myset 0 1 移除下标0-1之间的数据
zcard myset 获取集合中元素的数量,当列表不存在的时候返回的是0
zrem myset aaa bbb ccc 删除多个数据
zrank myset ccc 获取ccc 的索引
zremrangebyscore myset 4 5 删除分数在4 和 5之间的所以值
zcount myset 0 100 获取分数在 0 - 100之间的所以值的总数