Redis笔记04-5种基本数据类型

String(字符串)

String是最常用的一种数据类型,value可以存储字符串,还可以存储数字。存储数字的时候,可以用作计数器,因为Redis的incr命令非常快。

# set一个key-value
127.0.0.1:6379> set k1 v1
OK
# 根据key获取value
127.0.0.1:6379> get k1
"v1"
# 在key的基础上追加字符串,如果key不存在,相当于set
127.0.0.1:6379> append k1 "hello world"
(integer) 13
127.0.0.1:6379> get k1
"v1hello world"
# 求key对应value的长度
127.0.0.1:6379> strlen k1
(integer) 13
# set一个key-value
127.0.0.1:6379> set k2 0
OK
# k2对应的value增加1
127.0.0.1:6379> incr k2
(integer) 1
127.0.0.1:6379> get k2
"1"
# k2对应的value减少1
127.0.0.1:6379> decr k2
(integer) 0
127.0.0.1:6379> get k2
"0"
# 设置incr的步长
127.0.0.1:6379> incrby k2 10
(integer) 10
127.0.0.1:6379> get k2
"10"
# 设置decr的步长
127.0.0.1:6379> decrby k2 5
(integer) 5
127.0.0.1:6379> get k2
"5"
# set一个key-value
127.0.0.1:6379> set k1 "hello world"
OK
127.0.0.1:6379> get k1
"hello world"
# 把获取到的value进行截取,左右区间都包含
127.0.0.1:6379> getrange k1 0 4
"hello"
# 当end==-1的时候,直接展示value,不做截取
127.0.0.1:6379> getrange k1 0 -1
"hello world"
# 从6下标开始,对value进行替换
127.0.0.1:6379> setrange k1 6 "everyone"
(integer) 14
127.0.0.1:6379> get k1
"hello everyone"
# 设置一个key-value,并设置过期时间是10秒
127.0.0.1:6379> setex k3 10 "v3"
OK
# 当key存在的时候,创建key-value失败
127.0.0.1:6379> setnx k1 "good"
(integer) 0
# 当key不存在的时候,创建key-value
127.0.0.1:6379> setnx k2 "good"
(integer) 1
# 批量set
127.0.0.1:6379> mset k1 v1 k2 v2 k3 v3
OK
# 批量get
127.0.0.1:6379> mget k1 k2 k3
1) "v1"
2) "v2"
3) "v3"
# 在not exist的时候批量set,msetnx是一个原子操作,如果有一个失败,全都失败
127.0.0.1:6379> msetnx k1 v100 k4 v4
(integer) 0
127.0.0.1:6379> mget k1 k2 k3 k4
1) "v1"
2) "v2"
3) "v3"
4) (nil)
# key的一种设计思想,如果有相同类型的,可以用前缀来区分
127.0.0.1:6379> mset user-1-name zhagnsan user-2-name lisi
OK
127.0.0.1:6379> mget user-1-name user-2-name
1) "zhagnsan"
2) "lisi"
# 更新值并返回旧值
127.0.0.1:6379> getset key value1
(nil)
127.0.0.1:6379> getset key value2
"value1"

List(列表)

在Redis里,List还是非常灵活的,可以当做栈,队列,阻塞队列。

# 向list中插入了3个数据,从左侧插入
127.0.0.1:6379> lpush list 1 2 3
(integer) 3
# 获取list中全部数据
127.0.0.1:6379> lrange list 0 -1
1) "3"
2) "2"
3) "1"
# 按范围从list中获取数据
127.0.0.1:6379> lrange list 0 1
1) "3"
2) "2"
# 向list中插入1个数据,从右侧插入
127.0.0.1:6379> rpush list 0
(integer) 4
127.0.0.1:6379> lrange list 0 -1
1) "3"
2) "2"
3) "1"
4) "0"
# 从左侧移除一个元素
127.0.0.1:6379> lpop list
"3"
127.0.0.1:6379> lrange list 0 -1
1) "2"
2) "1"
3) "0"
# 从右侧移除一个元素
127.0.0.1:6379> rpop list
"0"
127.0.0.1:6379> lrange list 0 -1
1) "2"
2) "1"
# 根据index获取数据
127.0.0.1:6379> lindex list 0
"2"
127.0.0.1:6379> lindex list 1
"1"
# 求list的长度
127.0.0.1:6379> llen list
(integer) 2
# 再放入一个key-value
127.0.0.1:6379> lpush list 1
(integer) 3
# 可以看到list中允许出现重复的值
127.0.0.1:6379> lrange list 0 -1
1) "1"
2) "2"
3) "1"
# 从list中移除2个1
127.0.0.1:6379> lrem list 2 1
(integer) 2
127.0.0.1:6379> lrange list 0 -1
1) "2"
# 手动添加几个元素到list中后,查看list中的元素
127.0.0.1:6379> lrange list 0 -1
1) "7"
2) "6"
3) "5"
4) "4"
5) "3"
6) "2"
7) "1"
# 对list做trim,保留下标为[1,4]范围的值
127.0.0.1:6379> ltrim list 1 4
OK
127.0.0.1:6379> lrange list 0 -1
1) "6"
2) "5"
3) "4"
4) "3"
# 向list中加入1 2 3元素
127.0.0.1:6379> lpush list 1 2 3
(integer) 3
# 从list的右侧pop后,将值从左侧push到otherlist中
127.0.0.1:6379> rpoplpush list otherlist
"1"
127.0.0.1:6379> lrange list 0 -1
1) "3"
2) "2"
127.0.0.1:6379> lrange otherlist 0 -1
1) "1"
# 判断list是否存在
127.0.0.1:6379> exists list
(integer) 0
# 给list的0下标处更新值,如果list不存在或者下标不存在,会报错
127.0.0.1:6379> lset list 0 v1
(error) ERR no such key
127.0.0.1:6379> lpush list 1
(integer) 1
127.0.0.1:6379> lrange list 0 -1
1) "1"
# 给list的0下标处更新值
127.0.0.1:6379> lset list 0 v1
OK
127.0.0.1:6379> lrange list 0 -1
1) "v1"
# 向list中加入元素
127.0.0.1:6379>  lpush list  1 2 1
(integer) 3
# 向list执行insert操作,插入位置在value=1的元素前面,插入了一个5
127.0.0.1:6379> linsert list before 1 5
(integer) 4
127.0.0.1:6379> lrange list 0 -1
1) "5"
2) "1"
3) "2"
4) "1"

Set(集合)

# 向set中添加元素
127.0.0.1:6379> sadd set 1 2 3
(integer) 3
# 查看set中的元素
127.0.0.1:6379> smembers set
1) "1"
2) "2"
3) "3"
# 向set中添加重复的值
127.0.0.1:6379> sadd set 1
(integer) 0
# 查看set中的所有元素
127.0.0.1:6379> smembers set
1) "1"
2) "2"
3) "3"
# sismember命令查看某个值在set中是否存在
127.0.0.1:6379> sismember set 5
(integer) 0
127.0.0.1:6379> sismember set 1
(integer) 1
# 获取set中元素个数
127.0.0.1:6379> scard set
(integer) 3
# 移除set中的指定元素
127.0.0.1:6379> srem set 1 3
(integer) 2
127.0.0.1:6379> smembers set
1) "2"
# 向set中添加元素
127.0.0.1:6379> sadd set 1 2 3 4 5 6 7
(integer) 7
# 从set中随机选出2个元素
127.0.0.1:6379> srandmember set 2
1) "3"
2) "7"
127.0.0.1:6379> srandmember set 2
1) "1"
2) "2"
127.0.0.1:6379> srandmember set 2
1) "1"
2) "7"
# 随机移除一个元素
127.0.0.1:6379> spop set
"3"
# 创建一个set2并放入元素
127.0.0.1:6379> sadd set2 10 11
(integer) 2
# 从set中移出一个元素5,把这个5放到set2中
127.0.0.1:6379> smove set set2 5
(integer) 1
127.0.0.1:6379> smembers set
1) "1"
2) "2"
3) "4"
4) "6"
5) "7"
127.0.0.1:6379> smembers set1
(empty array)
127.0.0.1:6379> smembers set2
1) "5"
2) "10"
3) "11"
# 向set1添加元素
127.0.0.1:6379> sadd set1 1 2 3 4 5
(integer) 5
# 向set2添加元素
127.0.0.1:6379> sadd set2 1 3 5 7 9
(integer) 5
# 求set1-set2的结果
127.0.0.1:6379> sdiff set1 set2
1) "2"
2) "4"
# 求set2-set1的结果
127.0.0.1:6379> sdiff set2 set1
1) "7"
2) "9"
# 求set1和set2的交集
127.0.0.1:6379> sinter set1 set2
1) "1"
2) "3"
3) "5"
# 求set1和set2的并集
127.0.0.1:6379> sunion set1 set2
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "7"
7) "9"

Hash(哈希)

是一个Map集合。

# 给hash填充数据
127.0.0.1:6379> hset hash k1 v1 k2 v2 k3 v3
(integer) 3
# 获取数据
127.0.0.1:6379> hget hash k1
"v1"
127.0.0.1:6379> hget hash k2
"v2"
127.0.0.1:6379> hget hash k3
"v3"
# 一次获取多个值
127.0.0.1:6379> hmget hash k1 k2
1) "v1"
2) "v2"
# 获取全部数据,以key,value的形式输出
127.0.0.1:6379> hgetall hash
1) "k1"
2) "v1"
3) "k2"
4) "v2"
5) "k3"
6) "v3"
# 删除指定的key-value
127.0.0.1:6379> hdel hash k1
(integer) 1
# 求hash中,键值对的个数
127.0.0.1:6379> hlen hash
(integer) 2
# 判断hash中,某个key是否存在
127.0.0.1:6379> hexists hash k1
(integer) 0
127.0.0.1:6379> hexists hash k2
(integer) 1
# 获取所有的key
127.0.0.1:6379> hkeys hash
1) "k2"
2) "k3"
# 获取所有的value
127.0.0.1:6379> hvals hash
1) "v2"
2) "v3"
# 填充一个k4-4
127.0.0.1:6379> hset hash k4 4
(integer) 1
# 让k4对应的value增加5
127.0.0.1:6379> hincrby hash k4 5
(integer) 9
127.0.0.1:6379> hvals hash
1) "v2"
2) "v3"
3) "9"

Zset(有序集合)

在Set的基础上,增加了一个值,用于排序。

# 向zset中添加元素,1是score,one是元素值
127.0.0.1:6379> zadd zset 1 one
(integer) 1
127.0.0.1:6379> zadd zset 2 two
(integer) 1
127.0.0.1:6379> zadd zset 3 three
(integer) 1
# 查看所有的值
127.0.0.1:6379> zrange zset 0 -1
1) "one"
2) "two"
3) "three"
# 在(-inf,+inf)范围内,按照score从小到大输出全部值
127.0.0.1:6379> zrangebyscore zset -inf +inf
1) "one"
2) "two"
3) "three"
# 在(-inf, +inf)范围内,按照score从大到小输出全部值
127.0.0.1:6379> zrevrangebyscore zset +inf -inf
1) "three"
2) "two"
3) "one"
# 移除一个元素
127.0.0.1:6379> zrem zset two
(integer) 1
# 统计zset中元素数量
127.0.0.1:6379> zcard zset
(integer) 2
# 统计[min, max]区间的元素数量
127.0.0.1:6379> zcount zset 0 2
(integer) 1

更多命令请在官网查询。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值