Redis——数据类型

一、string

概述

string是 redis 最基本的类型,最大能存储512MB的数据,String类型是二进制安全的,即可以存储任何数据、比如数字、图片、序列化对象等

一、append/get/set/strlen

实例

#append:追加键值,并返回追加后的长度(如果该键不存在则,创建键)
27.0.0.1:6379> exists rmb #判断该键是否存在,存在返回1,不存在返回0
(integer) 0
127.0.0.1:6379> append rmb "hello" #该键不存在,返回当前value长度
(integer) 5
127.0.0.1:6379> append rmb " world" #该键存在,返回追加后的长度
(integer) 11
127.0.0.1:6379> get rmb #查看指定键的value
"hello world"
127.0.0.1:6379> set rmb "yes" #为键创建新值,覆盖原有值
OK
127.0.0.1:6379> get rmb
"yes"
127.0.0.1:6379> strlen rmb #查看指定键的value长度
(integer) 3

二、incr/decr/incrby/decrby

127.0.0.1:6379> set rmb 100
OK
127.0.0.1:6379> incr rmb #键值增加1,键值必须为整数
(integer) 101
127.0.0.1:6379> decr rmb #键值减少1,键值必须为整数
(integer) 100
127.0.0.1:6379> decrby rmb 10 #键值减少指定数值
(integer) 90
127.0.0.1:6379> incrby rmb 20 #键值增加指定数值
(integer) 110

三、getset

格式:
getset key value #获取键值并返回,同事给键设置新值
127.0.0.1:6379> getset rmb 70 #返回修改前的值
"110"
127.0.0.1:6379> get rmb
"70"

四、setex

格式:
setex key seconds value #设定key的过期时间为seconds
127.0.0.1:6379> setex rmb 10 "hello" #设定过期时间为10s
OK
127.0.0.1:6379> ttl rmb #查看键的剩余存活时间(s)
(integer) 2
127.0.0.1:6379> ttl rmb #返回值-2表示键已过期,-1表示永不过期(-1表示最大值)
(integer) -2
127.0.0.1:6379> get rmb #键过期后,无法查看原key值,返回nil;键在存活期内可以查看
(nil)

五、setnx

格式:
setnx key value #不存在的键,则执行set操作;存在的键则不执行,返回0未执行成功
127.0.0.1:6379> setnx rmb 100
(integer) 1
127.0.0.1:6379> setnx rmb 50
(integer) 0

六、mget/mset/msetnx

m:批量
127.0.0.1:6379> mset a "a" b "b"
OK
127.0.0.1:6379> msetnx c "c" d "d"
(integer) 1
127.0.0.1:6379> mget a b c d
1) "a"
2) "b"
3) "c"
4) "d"
127.0.0.1:6379> msetnx c "c" e "e" #c存在,返回值为0(只要有一个存在,就都不会执行)
(integer) 0
127.0.0.1:6379> mget c e #e不存在返回值为nil
1) "c"
2) (nil)

二、List数据类型

概述

列表的元素类型为string,按照插入顺序排序,在列表的头部或尾部添加元素。

一、lpush/lpushx/lrange

格式:
lpush key value1 value2 ... #在头部依次插入列表元素,键可以不存在
lrange key start stop #取从位置索引start到stop的所有元素(索引从0开始)
lpushx key value #在头部插入元素,并返回数量;但键必须存在
127.0.0.1:6379> lpush rmb a b c d
(integer) 4
127.0.0.1:6379> lrange rmb 0 2
1) "d"
2) "c"
3) "b"
127.0.0.1:6379> lrange rmb 0 -1 #-1表示最后一个元素
1) "d"
2) "c"
3) "b"
4) "a"
127.0.0.1:6379> lpushx rmb e
(integer) 5
127.0.0.1:6379> lpushx rmb1 e
(integer) 0

二、lpop/llen

127.0.0.1:6379> lpop rmb #移除第一个元素
"e"
127.0.0.1:6379> lrange rmb 0 -1
1) "d"
2) "c"
3) "b"
4) "a"
127.0.0.1:6379> llen rmb #显示剩余元素的数量
(integer) 4

三、lrem/lset/lindex/ltrim

127.0.0.1:6379> lpush rmb a b c d a e 
(integer) 6
127.0.0.1:6379> lrem rmb 2 a #删除两个值为a的元素,并返回删除数量
(integer) 2 
127.0.0.1:6379> lrange rmb 0 -1
1) "e"
2) "d"
3) "c"
4) "b"
127.0.0.1:6379> lindex rmb 1 #查看索引位置为1的元素
"d"
127.0.0.1:6379> lset rmb 1 f #修改索引位置为1的元素为f
OK
127.0.0.1:6379> lindex rmb 1 
"f"
127.0.0.1:6379> lindex rmb 5 #查看的索引位置超出列表元素的数量,返回nil
(nil)
127.0.0.1:6379> lset rmb 5 g #修改索引位置超出列表元素的数量,则返回错位信息
(error) ERR index out of range
127.0.0.1:6379> ltrim rmb 0 2 #保留索引位置0-2的元素,其他删除
OK
127.0.0.1:6379> lrange rmb 0 -1
1) "e"
2) "f"
3) "c"

四、linsert

格式:
linsert key before|after pivot value:在元素pivot的左侧或右侧插入value
127.0.0.1:6379> linsert rmb before f a
(integer) 4
127.0.0.1:6379> lrange rmb 0 -1
1) "e"
2) "a"
3) "f"
4) "c"
127.0.0.1:6379> linsert rmb after f a
(integer) 5
127.0.0.1:6379> lrange rmb 0 -1
1) "e"
2) "a"
3) "f"
4) "a"
5) "c"
127.0.0.1:6379> linsert rmb after b a #在不存在的元素前后插入新的元素,执行失败,返回-1
(integer) -1
127.0.0.1:6379> linsert rmb1 after f b #对不存的键进行操作,执行失败,返回0
(integer) 0

五、rpush/rpushx/rpop/rpoplpush

127.0.0.1:6379> del rmb #删除键
(integer) 1
127.0.0.1:6379> rpush rmb e d c b a #在元素尾部依次插入
(integer) 5
127.0.0.1:6379> lrange rmb 0 -1 #查看键的所有元素
1) "e"
2) "d"
3) "c"
4) "b"
5) "a"
127.0.0.1:6379> rpushx rbm f #在key尾部插入f,不存在的键,返回0
(integer) 0
127.0.0.1:6379> rpushx rmb f #在key尾部插入f,存在则返回插入后的所有元素数量
(integer) 6
127.0.0.1:6379> lindex rmb 5 #查看索引位置5的元素
"f"
127.0.0.1:6379> lrange rmb 0 -1
1) "e"
2) "d"
3) "c"
4) "b"
5) "a"
6) "f"
127.0.0.1:6379> rpop rmb #移除右侧第一个元素
"f"
127.0.0.1:6379> lrange rmb 0 -1
1) "e"
2) "d"
3) "c"
4) "b"
5) "a"
127.0.0.1:6379> rpoplpush rmb rmb1 #移除右侧第一个元素,并插入到新key中
"a"
127.0.0.1:6379> lrange rmb 0 -1
1) "e"
2) "d"
3) "c"
4) "b"
127.0.0.1:6379> lrange rmb1 0 -1
1) "a"
127.0.0.1:6379> rpoplpush rmb rmb #同一键名,则将最后一个元素移至第一个
"b"
127.0.0.1:6379> lrange rmb 0 -1
1) "b"
2) "e"
3) "d"
4) "c"

三、Hash数据类型(散列类型)

概述

hash用于存储对象。可以采用这样的命名方式(hash格式) :对象类别和ID构成键名,使用字段表示对象的可字段值则存储属性值。

一、1、HSET /HGET /HDEL/HEXISTS/HLEN/HSETNX

127.0.0.1:6379> hset ahash field1 "wu" #给键值为ahash的键设置字段为field1,值为wu
(integer) 1
127.0.0.1:6379> hget ahash field1 #获取键值为ahash,字段为field1的值
"wu"
127.0.0.1:6379> hget ahash field2 #键ahash中不存在field2,返回值为nil
(nil)
127.0.0.1:6379> hset ahash field2 "hao" #给键值为ahash的键设置字段为field2,值为hao
(integer) 1
127.0.0.1:6379> hlen ahash #获取ahash键的字段数量
(integer) 2
127.0.0.1:6379> hexists ahash field1 #判断字段field1是否存在,存在返回1
(integer) 1
127.0.0.1:6379> hexists ahash field #判断字段field是否存在,不存在返回0
(integer) 0
127.0.0.1:6379> hdel ahash field1 #删除字段field1
(integer) 1
127.0.0.1:6379> hdel ahash field1 #不存在,删除执行失败,返回0
(integer) 0
127.0.0.1:6379> hexists ahash field1 #判断是否存在,因为不存在返回0
(integer) 0
127.0.0.1:6379> hset ahash field1 wu #给键值为ahash的键设置字段为field1,值为wu
(integer) 1
127.0.0.1:6379> hset ahash field1 wu #因为已经存在,命令执行失败,返回0
(integer) 0

二、hincrby

127.0.0.1:6379> hset ahash field 5 #给ahash键的字段为field设定值为5
(integer) 1
127.0.0.1:6379> hincrby ahash field 1 #给字段field的值加一
(integer) 6
127.0.0.1:6379> hincrby ahash field -1 #给字段field的值减一
(integer) 5
127.0.0.1:6379> hincrby ahash field -10 #给字段field的值减十
(integer) -5

三、hgetall/hkeys/hvals/hmget/hmset

127.0.0.1:6379> del ahash #删除键
(integer) 1
127.0.0.1:6379> hmset ahash field "wu" field1 "hao" #给键ahash,一次设置多个字段和值
OK
127.0.0.1:6379> hmget ahash field field1 field2 #查看字段的值,因为field2字段不存在,返回nil
1) "wu"
2) "hao"
3) (nil)
127.0.0.1:6379> hgetall ahash #获取键ahash所有字段和值
1) "field"
2) "wu"
3) "field1"
4) "hao"
127.0.0.1:6379> hkeys ahash #获取键ahash所有字段
1) "field"
2) "field1"
127.0.0.1:6379> hvals ahash #获取键ahash所有值
1) "wu"
2) "hao"

四、set数据类型(无序集合)

概述

无序集合,元素类型为string类型,元素具有唯一性,不允许存在重复的成员。多个集合类型之间可以进行并集、交集和差集运算。

一、SADD/ SMEMBERS/SCARD/ SISMEMBER

127.0.0.1:6379> sadd wh a b c #创建键wh,并插入三个元素
(integer) 3
127.0.0.1:6379> sadd wh a d e #a存在,所有不执行,只插入没有的元素
(integer) 2
127.0.0.1:6379> sismember wh a #判断元素a是否存在,存在返回1
(integer) 1
127.0.0.1:6379> sismember wh f #判断元素f是否存在,不存在返回0
(integer) 0
127.0.0.1:6379> smembers wh #查看键wh中的所有元素,但可以看到列表中的元素并没有按照插入的顺序排列
1) "a"
2) "b"
3) "d"
4) "e"
5) "c"
127.0.0.1:6379> scard wh #获取元素数量
(integer) 5

二、spop/srem/srandmember/smove

127.0.0.1:6379> del wh #删除键
(integer) 1
127.0.0.1:6379> sadd dj a b c d #创建键和元素
(integer) 4
127.0.0.1:6379> smembers dj #查看键的元素
1) "c"
2) "d"
3) "a"
4) "b"
127.0.0.1:6379> srandmember dj #随机获取一个元素返回
"b"
127.0.0.1:6379> spop dj #随机移除一个元素
"b"
127.0.0.1:6379> smembers dj #查看键的元素
1) "c"
2) "d"
3) "a"
127.0.0.1:6379> srem dj a d e #移除a/d/e,因为e不存在,因此移除a/d
(integer) 2
127.0.0.1:6379> smembers dj #查看键的元素
1) "c"
127.0.0.1:6379> sadd dj a b d e #插入元素
(integer) 4
127.0.0.1:6379> sadd wh f g #创建键和元素
(integer) 2
127.0.0.1:6379> smove dj wh a #将键dj中的元素a移至键wh中
(integer) 1
127.0.0.1:6379> smove dj wh a #因为键dj中没有元素a,执行失败,返回0
(integer) 0
127.0.0.1:6379> smembers wh #查看键的元素
1) "g"
2) "a"
3) "f"

五、sorted set数据类型(zset、有序集合)

概述

1、有序集合,元素类型为sting,元素具有唯一性,不能重复。
2、每个元素都会关联-个double类型的分数score(表示权重),可以通过权重的大小排序,元素的score可以相同。

二、ZADD/ZCARD/ZCOUNT/ZREM/ ZINCRBY/ZSCORE/ZRANGE/ZRANK

127.0.0.1:6379> zadd xzset 1 "one" #创建分数和成员
(integer) 1
127.0.0.1:6379> zadd xzset 2 "two" 3 "three" #创建多个分数和成员
(integer) 2
127.0.0.1:6379> zrange xzset 0 -1 withscores #查看键中所有分数和成员
1) "one"
2) "1"
3) "two"
4) "2"
5) "three"
6) "3"
127.0.0.1:6379> zrange xzset 0 -1 #查看键中成员
1) "one"
2) "two"
3) "three"
127.0.0.1:6379> zrank xzset one #获取成员one的位置索引,存在返回0
(integer) 0
127.0.0.1:6379> zrank xzset four #不存在返回nil
(nil)
127.0.0.1:6379> zcard xzset #获取键中成员数量 
(integer) 3
127.0.0.1:6379> zcount xzset 1 2 #获取分数大于等于1且小于等于2的成员数量
(integer) 2
127.0.0.1:6379> zrem xzset one two #删除成员one和two
(integer) 2
127.0.0.1:6379> zcard xzset #获取键中成员数量 
(integer) 1
127.0.0.1:6379> zscore xzset three #获取成员three的分数
"3"
127.0.0.1:6379> zscore xzset two #因为没有成员two,返回nil
(nil)
127.0.0.1:6379> zincrby xzset 2 one #创建成员one,分数为2,返回分数
"2"
127.0.0.1:6379> zincrby xzset -1 one #修改成员one的分数-1,返回修改后的值
"1" 
127.0.0.1:6379> zrange xzset 0 -1 withscores #查看键中所有成员和分数
1) "one"
2) "1"
3) "three"
4) "3"

三、zrangebyscore/zremrangebyrank/zremrangebyscore

127.0.0.1:6379> zadd wh 1 one 2 two 3 three 4 four #创建分数和成员
(integer) 4
127.0.0.1:6379> zrangebyscore wh 1 2 #获取分数大于等于1且小于等于2的成员
1) "one"
2) "two"
127.0.0.1:6379> zrangebyscore wh (1 2 #获取分数大于1且小于等于2的成员
1) "two"
127.0.0.1:6379> zrangebyscore wh -inf +inf limit 2 3 #-inf:第一个成员;+inf:最后一个成员,获取索引位置2后面的3位成员
1) "three"
2) "four"
127.0.0.1:6379> zrangebyscore wh 0 4 limit 2 3 #获取索引位置2后面的3位成员
1) "three"
2) "four"
127.0.0.1:6379> zremrangebyscore wh 1 2 #删除分数大于等于1且小于等于2的成员,并返回数量
(integer) 2
127.0.0.1:6379> zrange wh 0 -1 #查看所有成员
1) "three"
2) "four"
127.0.0.1:6379> zremrangebyrank wh 0 1 #删除位置索引大于等于0且小于等于1的成员,并返回数量
(integer) 2
127.0.0.1:6379> zcard wh #判断上一条命令是否执行成功
(integer) 0

四、zrevrange/zrevrangebyscore/zrevrank

127.0.0.1:6379> zadd wh 1 one 2 two 3 three 4 four
(integer) 4
127.0.0.1:6379> zrevrange wh 0 -1 withscores #以位置索引排序从高到低,查看键
1) "four"
2) "4"
3) "three"
4) "3"
5) "two"
6) "2"
7) "one"
8) "1"
127.0.0.1:6379> zrevrange wh 1 3 #查看位置索引1-3的成员,按位置索引高到低排序
1) "three"
2) "two"
3) "one"
127.0.0.1:6379> zrevrank wh one #查看成员one的位置索引
(integer) 3
127.0.0.1:6379> zrevrank wh four #查看成员four的位置索引
(integer) 0
127.0.0.1:6379> zrevrangebyscore wh 3 0 #获取分数大于0且小于等于3的成员
1) "three"
2) "two"
3) "one"
127.0.0.1:6379> zrevrangebyscore wh 4 0 limit 1 2 #获取分数大于0且小于等于4,且从位置索引0后两个成员
1) "three"
2) "two"
127.0.0.1:6379> zrevrangebyscore wh +inf -inf limit 1 2 #获取位置索引0后两个成员
1) "three"
2) "two"

小结:

#五种数据类新查询命令
##string字符串
get:单个获取
mget:批量获取

##list列表查询
lrange key start stop (o -1)

##hash散列类型
hget:查询指定hash散列类型的指定字段的值
hgetall:查询指定hash散列类型的所有的字段和值
hmget:批量指定hash散列类型的查询字段及对应的值
hkeys:查询指定hash散列类型的字段名
hvals 查询指定hash散列类型的值

##set无序
smembers myzsetz

##set有序
zrange myset 0 -1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值