Redis五大基本数据类型的常用操作

String

存储键值

> set name wes
> get name
"wes"

> append name Chen	# 追加,返回长度,不存在时=set
(integer) 7
> mset k1 v1 k2 v2 k3 v3	# 批量设置
> msetnx k1 v1 k2 v2 k3 v3	# 批量设置键值,当且仅当所有不存在
> mget k1 k2 k3			# 批量获取
1) "v1"
2) "v2"
3) "v3"

> strlen name	# 获取字符串长度
(integer) 7
> setex age 30 3	# 创建age键值,30秒过期,值为3

> setnx age 33		# 不存在时创建,存在则不进行任何动作
> move k1 1			# 删除键值:1个

> getset age 30		# 设置新值并获取旧值,初始值为null

设置自增

> set view 0
> incr view		# 让储存的数字值加一
(integer) 1
> get view
"1"
> decr view		# 让储存的数字值减一
(integer) 0
> get view
"0"
> incrby view 10	# 加10
(integer) 10
> decrby view 3 	# 减3
(integer) 7

获取字符串内容

> getrange name 0 3	# 获取字符串 0~3 的内容
"wesC"
> getrange name 0 -1	# 获取整个字符串
"wesChen"
> setrange name 3 "abc"	# 将字符串从3开始逐位替换abc
(integer) 7
> get name
"wesabcn"

创建对象

> set user:1 {name:wes,age:3}
> get user:1
"{name:wes,age:3}"

> mset user:2:name wes user:2:age 3
> keys *
1) "user:2:name"
2) "user:2:age"

List

> lpush list one	# 在首部加值
(integer) 1
> rpush list two	# 在尾加值
(integer) 2
> rpoplpush list list2	# 从尾部取一个值插入首部,list2不存在时会创建
"two"


> lrange list 0 -1	# 获取 list 所有值
1) "one"
2) "two"
> lrange list 0 0	# 获取 list 范围值
1) "one"
> lindex list 0		# 获取指定下标值
"one"
> llen list			# 获取 list 大小
(integer) 1

> lpop list			# 删除第一个元素并返回
"three"
> rpop list			# 删除最后一个元素并返回
"two"
> lrem list 1 one	# 从左边删除1个值为one的
> ltrim list 0 1	# 保留 0~1 的值,其他删除

> lset list 0 demo	# 将 index = 0 的值替换为 demo

插入元素

127.0.0.1:6379> linsert list before "k3" "k4"	# 在k3前插入k4
127.0.0.1:6379> linsert list after "k3" "k5"	# 在k3后插入k5

Set

Set 存储的值不能重复

> sadd k1 1
> sadd k1 2 3 4 5

> smembers k1	# 查看set所有内容
1) "1"
2) "2"
> scard k1		# 查看元素个数
(integer) 2
> sismember k1 1	# 判断是否存在,存在1,不存在0
(integer) 1

> srem k1 1		# 删除指定元素
(integer) 1
> spop k1	# 随机删除元素并返回
"4"
> smove k1 set2 "2"	# 把value移动到别的key
(integer) 1

> srandmember k1	# 随机获取一个元素
"2"
> srandmember k1 2	# 随机抽取两个元素
1) "4"
2) "2"

差集、交集、并集

> smembers k1
1) "3"
> smembers k2
1) "2"

> sdiff k1 k2	# 差集 set - set2
1) "3"
> sinter k1 k2	# 交集
(empty array)
> sunion k1 k2	# 并集
1) "2"
2) "3"

Hash

存的是 key - value

在这里插入图片描述

> hset user id 1
> hmset user name zhangsan age 20
> hsetnx user email 136@qq.com	# 键值不存在则创建,存在不创建
(integer) 1

> hget user id
"1"
> hmget user name age
1) "zhangsan"
2) "20"
> hgetall user # 获取所有键值对
1) "id"
2) "1"
3) "name"
4) "zhangsan"
5) "age"
6) "20"
> hkeys user	# 获取所有key
1) "name"
2) "age"
> hvals user	# 获取所有键值
1) "zhangsan"
2) "20"

> hlen user		# 获取键值对数量
(integer) 2
> hdel user id	# 删除指定键值对
(integer) 1

> hexists user id	# 判断键值是否存在,存在1 不存在0
(integer) 0

> hincrby user age 1	# 键值增加1
(integer) 21
> hincrby user age -2	# 键值减少2
(integer) 19

Zset

> zadd k1 1 one	# 添加一个值,score = 1
> zadd k1 2 two 3 three	# 增加两个值
> zrange k1 0 -1	# 获取所有值
1) "one"
2) "two"
3) "three"

> zrangebyscore k1 -inf +inf	# 按score升序显示
1) "one"
2) "two"
3) "three"

> zrangebyscore k1 -inf +inf withscores	# 显示值并显示score
1) "one"
2) "1"
3) "two"
4) "2"
5) "three"
6) "3"
> zrevrangebyscore k1 0 -1 withscores # 降序显示
1) "three"
2) "two"
3) "one"

> zrangebyscore k1 -inf 2  withscores 	# 显示score到2位置的数据
1) "one"
2) "1"
3) "two"
4) "2"

> zcard k1		# 获取集合元素个数
(integer) 2

> zrem k1 one	# 删除 one
> zcount k1 1 2	# 计算 score 在 [1,2] 的个数
(integer) 1
> zrank key value # 返回value在key中的排名,从0开始

> zadd k1 1 20
> zincrby k2 50 20  # 让20增加50

底层:hash + 跳跃表

  • hash:关联元素 value 和 权重 score,保障 value 的唯一性,可以通过 value 找到 score
  • 跳跃表:给元素 value 排序,根据 score 的范围获取元素列表
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值