redis的五种数据类型
目录
一、String数据类型
1、String数据类型概述
2、string 数据类型常用命令
1、set 设置指定 key 的值
2、get 获取指定 key 的值
3、append key values
4、exists key:判断该键是否存在
5、strlen key:获取指定key的字符长度
6、incr key:key值递增加1(key值必须为整数)
7、decr key:该Key的值递减1
8、getset :获取key值并返回,同时给key设置新值
9、incrby :减少指定的整数
10、decrby :增加指定的整数
11、setex :设置指定key的过期时间
12、setnx:不存在键的话执行set操作,存在的话不执行
13、mset:批量设置键对
14、mget:批量获取就键对
15、msetnx:批量设置键-值对,都不存在就执行并返回1;只要有一个存在就不执行并返回0
二、list 数据类型
1、list 数据类型概述
2、list 数据类型常用类型
1、lpush(设置,创建):在头部(左侧left)依次插入列表元素
2、lpushx(相当于插入,从左侧插入):键必须存在才能执行,在头部插入元素值并返回并返回列表元素数量
3、lrange(获取,以下标索引的方式获取) :取从位置索引start到位置索引stop的所有元素(索引以0开始)
4、lpop :移除并返回mykey键的第一个元素,即从右往左第一个
5、lrem:从头部开始删除count个值为value的元素,并返回实际删除数量
6、lset:将位置索引为index的元素设置新值value
7、lindex:获取索引为index的元素
8、ltrim:仅保留从位置索引start到索引stop的元素
9、linsert :插入元素(利用before、after在指定元素前后插入)
10、rpush : 在列表的尾部依次插入value
11、rpushx :key必须存在才可执行,将value从尾部插入,并返回所有元素数量
12、rpop:在尾部弹出(移除)一个元素,并返回该元素
13、rpoplpush :在key1的尾部弹出一个元素并返回,将它插入key2的头部
三、Hash数据类型 (散列类型)
1、Hash数据类型概述
2、Hash数据类型常用命令
1、hset :给键值为myhash的键设置字段为##,值为##
2、hget:获取键值为##,字段为##的值
3、hdel:删除##键中字段名为##的字段
4、hexists:判断##键中是否存在##字段
5、hlen:命令获取##键的字段数量
6、hsetnx:通过hsetnx命令给##添加新字段##,其值为##,因为该字段已经被删除,所以该命令添加成功并返回1
7、hincrby:给键的字段的值加1
8、hgetall:获取键的所有字段及其值
9、hkeys:获取键中所有字段的名字
10、hvals:获取键中所有字段的值
11、 hmset:批量设置键的字段值
12、hmget:批量获取键的字段值
四、set数据类型(无序集合)
1、set数据类型概念
2、set数据类型常用命令
1、sadd:插入测试数据
2、smembers:查看插入的结果是否存在
3、scard:获取Set集合中元素的数量
4、sismember:判断f是否已经存在,返回值为0表示不存在
5、spop:随机的移除并返回set中的某一成员
6、srem:移除指定元素
7、srandmember:随机返回集合中的某一员
8、smove
五、Sorted Set数据类型 (zset、有序集合)
1、Sorted Set数据类型概述
2、Sorted Set数据类型常用命令
1、zadd :添加成员
2、zcard:获取成员数量
3、zcount:zcount key min max,分数满足表达式1 <= score <= 2的成员的数量
4、zrem:删除指定成员
5、zincreby:将成员one的分数增加-1,并返回该成员更新后的分数
6、zscore:获取成员的分数
7、zrange
8、zrank:获取成员的索引值
一、String数据类型
1、String数据类型概述
String是 redis 最基本的类型,最大能存储 512MB 的数据,String类型是二进制安全的,即可以存储任何数据、比如数字、图片、序列化对象等。
2、string 数据类型常用命令
1、set 设置指定 key 的值
127.0.0.1:6379> set lisi shangjia ## 给key:lisi 赋值shangjia
OK
127.0.0.1:6379> get lisi ## 获取键:lisi的值
"shangjia"
2、get 获取指定 key 的值
127.0.0.1:6379> get a3
"3"
3、append key values
如果 key 已经存在并且是一个字符串, APPEND 命令将指定的 value 追加到该 key 原来值(value)的末尾。(若键不存在,则相当于创建)
127.0.0.1:6379> exists home ## 检测键:home是否存在
(integer) 0 ## 返回值为0,表示不存在
127.0.0.1:6379> append home "cat" ## 原值不存在,此时相当于添加值
(integer) 3
127.0.0.1:6379> get home ## 获取键:home的值
"cat"
127.0.0.1:6379> append home "dog" ## 原键存在值,此时相当于在原值的基础上进行追加
(integer) 6
127.0.0.1:6379> get home ## 获取键:home的值。呈追加状态
"catdog"
4、exists key:判断该键是否存在
存在返回1,不存在返回0
127.0.0.1:6379> exists v5 ## 查询键:v5的是否存在并显示值
(integer) 1 ## 返回值为1,表示存在
127.0.0.1:6379> get v5 ## 获取键:v5的值
"5"
127.0.0.1:6379> exists wangwu ## 查询键wangwu是否存在并显示值
(integer) 0 ## 返回值为0,表示不存在
127.0.0.1:6379> get wangwu
(nil)
5、strlen key:获取指定key的字符长度
127.0.0.1:6379> strlen v5
(integer) 1
127.0.0.1:6379> strlen home
(integer) 6
6、incr key:key值递增加1(key值必须为整数)
127.0.0.1:6379> set a 34 ## 设置key:a的values为34
OK
127.0.0.1:6379> incr a ## key值递增加1
(integer) 35
127.0.0.1:6379> get a ## 验证为递增加一
"35"
7、decr key:该Key的值递减1
127.0.0.1:6379> get a
"35"
127.0.0.1:6379> decr a ## key值递减1
(integer) 34
127.0.0.1:6379> get a
"34"
8、getset :获取key值并返回,同时给key设置新值
127.0.0.1:6379> getset m5 666 ## 键m5键值不存在情况下,直接赋予值为666
(nil)
127.0.0.1:6379> get m5
"666"
127.0.0.1:6379> getset m5 777 ## 当存在时,覆盖原值。为777
"666"
127.0.0.1:6379> get m5
"777"
9、incrby :减少指定的整数
127.0.0.1:6379> set b 20 ### 设置键b值等于5
OK
127.0.0.1:6379> incrby b 5 ### 设置递增为5
(integer) 25
127.0.0.1:6379> incrby b 5
(integer) 30
10、decrby :递减指定的整数
127.0.0.1:6379> get b ## 获取键值
"12"
127.0.0.1:6379> decrby b 3 ## 设置递减整数为3
(integer) 9
127.0.0.1:6379> decrby b 3
(integer) 6
11、setex :设置指定key的过期时间
redis: -1 往往代表的是一个上限,表示所有的意思
: -2 表示的失效/过期
127.0.0.1:6379> setnx b 30 ## 当键名为b值为30不存在时则创建
(integer) 1
127.0.0.1:6379> ttl b ## 查看键b的键值对有效时间
(integer) -1 ## 默认为永久失效
127.0.0.1:6379> setex b 10 30 ## 设置键值对b、30失效时间为10秒
OK
127.0.0.1:6379> ttl b
(integer) 8
127.0.0.1:6379> ttl b
(integer) 7
127.0.0.1:6379> ttl b
(integer) 6
127.0.0.1:6379> ttl b
(integer) 3
127.0.0.1:6379> ttl b ## 返回值为-2,键值对失效
(integer) -2
127.0.0.1:6379> get b ## 获取键值对。值为nil
(nil)
12、setnx:不存在键的话执行set操作,存在的话不执行
127.0.0.1:6379> get c ## 获取键值对,返回值为nil,不存在
(nil)
127.0.0.1:6379> set c 40 ## 设置键值对c、40
OK
127.0.0.1:6379> setnx c 40 ## 设置键值对c、40,返回值为0.说明已存在,设置失败
(integer) 0
127.0.0.1:6379> setnx d 40 ## 设置键值对d、40 ,返回值为40,设置成功
(integer) 1
127.0.0.1:6379> get c ## 获取键值对
"40"
127.0.0.1:6379> get d ## 获取键值对
"40"
13、mset:批量设置键对
14、mget:批量获取就键对
127.0.0.1:6379> mset a 10 b 20 c 30 d 40 ## 批量设置键值对
OK
127.0.0.1:6379> mget a b c d ## 批量获取键值对
1) "10"
2) "20"
3) "30"
4) "40"
15、msetnx:批量设置键-值对,都不存在就执行并返回1;只要有一个存在就不执行并返回0
127.0.0.1:6379> msetnx c 30 d 50 e 60 ## 批量设置键值对设置条件,当有一个存在时,整条不生效
(integer) 0 ## 返回值为0,不生效
127.0.0.1:6379> mget c d e ## 批量获取键值对,由于c和d 存在,以上设置e没生效为nil
1) "30"
2) "40"
3) (nil)
二、list 数据类型
1、list 数据类型概述
List 列表是简单的字符串列表,按照插入顺序排序,可以从头部或尾部向 List 列表添加元素。
2、list 数据类型常用类型
1、lpush(设置,创建):在头部(左侧left)依次插入列表元素
127.0.0.1:6379> lpush ceshi a b c d e
(integer) 5
2、lpushx(相当于插入,从左侧插入):键必须存在才能执行,在头部插入元素值并返回并返回列表元素数量
127.0.0.1:6379> lpushx ceshi01 g ## 从左侧插入g
(integer) 4
127.0.0.1:6379> lrange ceshi01 0 -1 ## 取链表中的全部元素,其中0表示第一个元素,-1表示最后一
## 一个元素
1) "g"
2) "h"
3) "f"
4) "e"
127.0.0.1:6379> rpushx ceshi01 a ## 从右侧添加元素
(integer) 5
127.0.0.1:6379> lrange ceshi01 0 -1 ## 显示所有元素
1) "g"
2) "h"
3) "f"
4) "e"
5) "a"
3、lrange(获取,以下标索引的方式获取) :取从位置索引start到位置索引stop的所有元素(索引以0开始)
127.0.0.1:6379> lrange ceshi01 0 -1 ## 显示所有元素
1) "g"
2) "h"
3) "f"
4) "e"
5) "a"
127.0.0.1:6379> lrange ceshi01 0 0 ## 获取该键的List Value的头部元素
1) "g"
4、lpop :移除并返回mykey键的第一个元素,即从右往左第一个
127.0.0.1:6379> lpush mykey a b c d
(integer) 4
127.0.0.1:6379> lrange mykey 0 -1
1) "d"
2) "c"
3) "b"
4) "a"
127.0.0.1:6379> lpop mykey ##移除并返回mykey键的第一个元素
"d"
127.0.0.1:6379> lrange mykey 0 -1
1) "c"
2) "b"
3) "a"
127.0.0.1:6379> llen mykey ## 获取表中元素数量,在执行lpop命令两次后,链表头部的两
## 个元素已经被弹出,此时链表中元素的数量是3
(integer) 3
5、lrem:从头部开始删除count个值为value的元素,并返回实际删除数量
6、lset:将位置索引为index的元素设置新值value
7、lindex:获取索引为index的元素
8、ltrim:仅保留从位置索引start到索引stop的元素
127.0.0.1:6379> lpush ceshi a b c d a c
(integer) 6
127.0.0.1:6379> lrem ceshi 1 a ### 从头部(left)向尾部(right)变量链表,删除1个值等于a的元
### 素,返回值为实际删除的数量
(integer) 1
127.0.0.1:6379> lrange ceshi 0 -1 ## 查看删除后结果,从索引从0到所有开始
1) "c"
2) "d"
3) "c"
4) "b"
5) "a"
127.0.0.1:6379> lrem ceshi 2 c ##删除2个值等于c的元素,返回值为实际删除的数量
(integer) 2
127.0.0.1:6379> lrange ceshi 0 -1
1) "d"
2) "b"
3) "a"
127.0.0.1:6379> lindex ceshi 1 ## 显示索引下标为1的元素
"b"
127.0.0.1:6379> lindex ceshi 2
"a"
127.0.0.1:6379> ltrim ceshi 0 1 # 仅保留索引值0到1之间的2个元素,注意第0个和第1个元素均被保留
OK
127.0.0.1:6379> lrange ceshi 0 -1
1) "d"
2) "b"
9、linsert :插入元素(利用before、after在指定元素前后插入)
127.0.0.1:6379> lpush ceshi a b c d e
(integer) 5
127.0.0.1:6379> linsert ceshi before b b1
(integer) 6
127.0.0.1:6379> lrange ceshi 0 -1
1) "e"
2) "d"
3) "c"
4) "b1"
5) "b"
6) "a"
127.0.0.1:6379> linsert ceshi after b b2
(integer) 7
127.0.0.1:6379> lrange ceshi 0 -1
1) "e"
2) "d"
3) "c"
4) "b1"
5) "b"
6) "b2"
7) "a"
10、rpush : 在列表的尾部依次插入value
11、rpushx :key必须存在才可执行,将value从尾部插入,并返回所有元素数量
12、rpop:在尾部弹出(移除)一个元素,并返回该元素
13、rpoplpush :在key1的尾部弹出一个元素并返回,将它插入key2的头部
127.0.0.1:6379> rpush ceshi2 a b c d ## 从链表的尾部插入参数中给出的values,插入
## 顺序是从右到左依次插入
(integer) 4
127.0.0.1:6379> lrange ceshi2 0 -1 ## 显示所有元素,从索引0开始
1) "a"
2) "b"
3) "c"
4) "d"
127.0.0.1:6379> lindex ceshi2 0 ## 显示索引值为0的元素值
"a"
127.0.0.1:6379> rpush ceshi2 e
(integer) 5
127.0.0.1:6379> lrange ceshi 0 -1
1) "e"
2) "d"
3) "c"
4) "b1"
5) "b"
6) "b2"
7) "a"
127.0.0.1:6379> lrange ceshi2 0 -1
1) "a"
2) "b"
3) "c"
4) "d"
5) "e"
127.0.0.1:6379> rpop ceshi
"a"
127.0.0.1:6379> rpoplpush ceshi2 ceshi
"e"
127.0.0.1:6379> lrange ceshi2 0 -1
1) "a"
2) "b"
3) "c"
4) "d"
127.0.0.1:6379> lrange ceshi 0 -1
1) "e"
2) "e"
3) "d"
4) "c"
5) "b1"
6) "b"
7) "b2"
三、Hash数据类型 (散列类型)
1、Hash数据类型概述
hash是一个键值对(key - value)集合,用于存储对象。可以采用这样的命名方式(hash格式):对象类别和ID构成键名,使用字段表示对象的属性,而字段值则存储属性值。
如:存储ID为2的汽车对象。如果Hash中包含很少的字段,那么该类型的数据也将仅占用很少的磁盘空间。每一个Hash可以存储4294967295个键值对。
2、Hash数据类型常用命令
1、hset :给键值为myhash的键设置字段为##,值为##
2、hget:获取键值为##,字段为##的值
3、hdel:删除##键中字段名为##的字段
4、hexists:判断##键中是否存在##字段
5、hlen:命令获取##键的字段数量
6、hsetnx:通过hsetnx命令给##添加新字段##,其值为##,因为该字段已经被删除,所以该命令添加成功并返回1
127.0.0.1:6379> hset myhash field1 "zhangsan" ## 设置键myhash 字段为field1,值为zhangsan
(integer) 1
127.0.0.1:6379> hget myhash field1 ## 获取myhash 的字段field1的值
"zhangsan"
127.0.0.1:6379> hget myhash field2 ## 获取myhash 的字段field2的值,提示为不存在
(nil)
127.0.0.1:6379> hset myhash field2 "san" ## 设置键myhash,字段field2的值
(integer) 1
127.0.0.1:6379> hlen myhash ## 显示myhash 的字段数量
(integer) 2
127.0.0.1:6379> hexists myhash field1 ## 查看myhash字段field1是否存在
(integer) 1
127.0.0.1:6379> hdel myhash field1 ## 删除myhash字段field1
(integer) 1
127.0.0.1:6379> hdel myhash field1 ## myhash字段field1,显示不成功,之前已删除
(integer) 0
127.0.0.1:6379> hexists myhash field1 ## 查看myhash字段field1是否存在,返回码为0,表示不存在
(integer) 0
127.0.0.1:6379> hsetnx myhash field1 "zhang" ## 检测myhash是否存在field1,返回值为1,表示不存
## 在且已创建
(integer) 1
127.0.0.1:6379> hsetnx myhash field1 "zhang" ## 返回值为0,表示才存在,命令不执行
(integer) 0
7、hincrby:给键的字段的值加1
8、hgetall:获取键的所有字段及其值
9、hkeys:获取键中所有字段的名字
10、hvals:获取键中所有字段的值
11、 hmset:批量设置键的字段值
12、hmget:批量获取键的字段值
127.0.0.1:6379> hmset myhash field1 "hello" field2 "world"
## 为键myhash,一次性设置多个字段,分别是field1="hello",field2="world"
OK
127.0.0.1:6379> hmget myhash field1 field2 ##获取myhash键的多个字段
1) "hello"
2) "world"
127.0.0.1:6379> hgetall myhash ##获取myhash键的所有字段
1) "field1"
2) "hello"
3) "field2"
4) "world"
127.0.0.1:6379> hkeys myhash ##获取myhash键中所有字段的名字
1) "field1"
2) "field2"
127.0.0.1:6379> hvals myhash ## 获取myhash键中所有字段的值
1) "hello"
2) "world"
四、set数据类型(无序集合)
1、set数据类型概念
无序集合,元素类型为string类型,元素具有唯一性, 不允许存在重复的成员。多个集合类型之间可以进行并集、交集和差集运算。
2、set数据类型常用命令
1、sadd:插入测试数据
127.0.0.1:6379> sadd myset a b c
(integer) 3
2、smembers:查看插入的结果是否存在
127.0.0.1:6379> smembers myset
1) "e"
2) "a"
3) "c"
4) "b"
5) "d"
3、scard:获取Set集合中元素的数量
127.0.0.1:6379> scard myset
(integer) 5
4、sismember:判断f是否已经存在,返回值为0表示不存在
127.0.0.1:6379> sismember myset a ## 查看a是否存在,返回值为1,表示存在
(integer) 1
127.0.0.1:6379> sismember myset f ## 查看f是否存在,返回值为0,表示不存在
(integer) 0
5、spop:随机的移除并返回set中的某一成员
127.0.0.1:6379> spop myset ## 随机移除一员
"b"
127.0.0.1:6379> scard myset ## 查看元素数量
(integer) 4
127.0.0.1:6379> smembers myset ## 查看移除后的myset信息
1) "e"
2) "a"
3) "c"
4) "d"
6、srem:移除指定元素
127.0.0.1:6379> smembers myset ##查看set中成员的位置
1) "e"
2) "a"
3) "c"
4) "d"
127.0.0.1:6379> srem myset e d f ## 移除e d f,由于f不存在,则只生效2个。
(integer) 2
127.0.0.1:6379> smembers myset
1) "a"
2) "c"
7、srandmember:随机返回集合中的某一员
127.0.0.1:6379> srandmember myset
"a"
127.0.0.1:6379> srandmember myset
"e"
8、smove
127.0.0.1:6379> smove myset no a ##把a从myset移到no
(integer) 1
127.0.0.1:6379> smembers myset
1) "c"
127.0.0.1:6379> smembers no
1) "b"
2) "c"
3) "a"
五、Sorted Set数据类型 (zset、有序集合)
1、Sorted Set数据类型概述
有序集合,元素类型为Sting,元素具有唯一性, 不能重复。每个元素都会关联–个double类型的分数score(表示权重),可以通过权重的大小排序,元素的score可以相同。
2、Sorted Set数据类型常用命令
1、zadd :添加成员
127.0.0.1:6379> zadd myzset 1 "one" ## 添加
(integer) 1
127.0.0.1:6379>
127.0.0.1:6379> zadd myzset 2 "two" 3 "three"
(integer) 2
2、zcard:获取成员数量
127.0.0.1:6379> zcard myzset
(integer) 3
3、zcount:zcount key min max,分数满足表达式1 <= score <= 2的成员的数量
127.0.0.1:6379> zcount myzset 1 2
(integer) 2
4、zrem:删除指定成员
127.0.0.1:6379> zrem myzset one two
(integer) 2
5、zincreby:将成员one的分数增加-1,并返回该成员更新后的分数
127.0.0.1:6379> zincrby myzset -1 one
"-1"
6、zscore:获取成员的分数
127.0.0.1:6379> zscore myzset one ## 获取成员one的分数
"-1"
7、zrange
127.0.0.1:6379> zrange myzset 0 -1 withscores ##查询成员及分数
1) "one"
2) "-1"
3) "three"
4) "3"
8、zrank:获取成员的索引值
127.0.0.1:6379> zrank myzset three
(integer) 1
还没有评论,来说两句吧...