目录
一.Redis数据类型分布
通常Redis的数据类型有五大基础类型(常用)
- String(字符串)
- List(列表)
- Hash(哈希/散列)
- Set(无序集合)
- Zset/Sorted Set(有序集合)
此外还有其他的,三种特殊的数据类型
- HyperLogLogs(基数统计)
- Bitmaps (位图)
- geospatial (地理位置)
二.字符串类型string
1.概述
- String是redis最基本的类型,最大能存储512MB的数据,String类型是二进制安全的,即可以存储任何数据、比如数字、图片、序列化对象等
2.操作
set 键 值
get 键
setex 键 秒数 值 #创建键并设置过期时间
incr 键 #数字递增+1
decr 键 #数字递减-1
STRLEN 键 #统计键值的字符长度
mset 键1 值1 键2 值2
mget 键1 键
redis 127.0.0.1:6379> exists mykey #判断该键是否存在,存在返回1,否则
返回0。
(integer) 0
redis 127.0.0.1:6379> append mykey "hello" #该键并不存在,因此append命令返回当
前Value的长度。
(integer) 5
redis 127.0.0.1:6379> append mykey " world" #该键已经存在,因此返回追加后Value
的长度。
(integer) 11
redis 127.0.0.1:6379> get mykey #通过get命令获取该键,以判断append
的结果。
"hello world"
redis 127.0.0.1:6379> set mykey "this is a test" #通过set命令为键设置新值,并覆盖原
有值。
OK
redis 127.0.0.1:6379> get mykey
"this is a test"
redis 127.0.0.1:6379> strlen mykey #获取指定Key的字符长度。
(integer) 14
三.列表list
1.概述
- 列表的元素类型为string,按照插入顺序排序,在列表的头部或尾部添加元素
2.操作
lpush 键 值1 值2 .... #从左边开始插入元素
rpush 键 值1 值2 .... #从右边开始插入元素
lrange 键 起始位置 终止位置 #起始位置 0表示左边开始的第一个元素,终止位置 -1表示到最后一个元素
lpop 键 #显示并删除左边第一个元素
rpop 键 #显示并删除右边第一个元素
lrem 键 N 值 #从左边开始删除N个指定元素
llen 键 #统计元素的数量
lindex 键 元素位置 #查看第N个元素的值
linsert 键 before|after 元素 值 #在指定元素前|后插入
redis 127.0.0.1:6379> del mykey
(integer) 1
redis 127.0.0.1:6379> lpush mykey a b c d #mykey键并不存在,该命令会创建该键及与其关联的List,之后在将参数中的values从左到右依次插入。
(integer) 4
redis 127.0.0.1:6379> lrange mykey 0 2 #取从位置0开始到位置2结束的3个元素。
1) "d"
2) "c"
3) "b"
redis 127.0.0.1:6379> lrange mykey 0 -1 #取链表中的全部元素,其中0表示第一个元素,-1表示最后一个元素。
1) "d"
2) "c"
3) "b"
4) "a"
redis 127.0.0.1:6379> lpushx mykey2 e #mykey2键此时并不存在,因此lpushx命令将不会进行任何操作,其返回值为0。
(integer) 0
redis 127.0.0.1:6379> lrange mykey2 0 -1 #可以看到mykey2没有关联任何List Value。
(empty list or set)
redis 127.0.0.1:6379> lpushx mykey e #mykey键此时已经存在,所以lpushx命令插入成功,并返回链表中当前元素的数量。
(integer) 5
redis 127.0.0.1:6379> lrange mykey 0 0 #获取该键的List Value的头部元素。
1) "e"
四.哈希hash
1.概述
- hash用于存储对象。可以采用这样的命名方式:对象类别和ID构成键名,使用字段表示对象的属性,而字段值则存储属性值。 如:存储 ID 为 2 的汽车对象
- 如果Hash中包含很少的字段,那么该类型的数据也将仅占用很少的磁盘空间。每一个Hash可以存储4294967295个键值对
2.操作
hset 键 字段 值
hmset 键 字段1 值1 字段2 值2 ....
hget 键 字段
hkeys 键 #查看所有的字段
hvals 键 #查看所有字段的值
hdel 键 字段 #删除指定字段
redis 127.0.0.1:6379> hset myhash field1 "zhang" #给键值为myhash的键设置字段为field1,值为zhang。
(integer) 1
redis 127.0.0.1:6379> hget myhash field1 #获取键值为myhash,字段为field1的值。
"zhang"
redis 127.0.0.1:6379> hget myhash field2 #myhash键中不存在field2字段,因此返回nil。
(nil)
redis 127.0.0.1:6379> hset myhash field2 "san" #给myhash添加一个新的字段field2,其值为san。
(integer) 1
redis 127.0.0.1:6379> hlen myhash #hlen命令获取myhash键的字段数量。
(integer) 2
redis 127.0.0.1:6379> hexists myhash field1 #判断myhash键中是否存在字段名为field1的字段,由于存在,返回值为1。
(integer) 1
redis 127.0.0.1:6379> hdel myhash field1 #删除myhash键中字段名为field1的字段,删除成功返回1。
(integer) 1
redis 127.0.0.1:6379> hdel myhash field1 #再次删除myhash键中字段名为field1的字段,由于上一条命令已经将其删除,因为没有删除,返回0。
(integer) 0
redis 127.0.0.1:6379> hexists myhash field1 #判断myhash键中是否存在field1字段,由于上一条命令已经将其删除,因为返回0。
(integer) 0
redis 127.0.0.1:6379> hsetnx myhash field1 zhang #通过hsetnx命令给myhash添加新字段field1,其值为zhang,因为该字段已经被删除,所以该命令添加成功并返回1。
(integer) 1
redis 127.0.0.1:6379> hsetnx myhash field1 zhang #由于myhash的field1字段已经通过上一条命令添加成功,因为本条命令不做任何操作后返回0。
(integer) 0
五.无序集合set
1.概述
- 无序集合,元素类型为String类型,元素具有唯一性,不允许存在重复的成员。多个集合类型之间可以进行并集、交集和差集运算
2.应用范围
- 可以使用Redis的Set数据类型跟踪一些唯一性数据,比如访问某一博客的唯一IP地址信息。对于此场景,我们仅需在每次访问该博客时将访问者的IP存入Redis中,Set数据类型会自动保证IP地址的唯一性
- 充分利用Set类型的服务端聚合操作方便、高效的特性,可以用于维护数据对象之间的关联关系。比如所有购买某一电子设备的客户ID被存储在一个指定的Set中,而购买另外一种电子产品的客户ID被存储在另外一个Set中,如果此时我们想获取有哪些客户同时购买了这两种商品时,Set的intersections命令就可以充分发挥它的方便和效率的优势了
3.操作
sadd 键 值1 值2 .... #元素不能重复
smembers 键 #查看元素,无序的
srem 键 值1 值2 ... #删除指定的元素
srandmember 键 N #随便显示N个元素
scard 键 #统计元素的数量
spop 键 #随机显示并删除一个元素
smove 键1 键2 值 #将键1的元素移动到键2中
sinter 键1 键2 #求键1与键2的交集
sdiff 键1 键2 #求键1与键2的差集
sunion 键1 键2 #求键1与键2的并集
redis 127.0.0.1:6379> sadd myset a b c
#插入测试数据,由于该键myset之前并不存在,因此参数中的三个成员都被正常插入。
(integer) 3
redis 127.0.0.1:6379> sadd myset a d e
#由于参数中的a在myset中已经存在,因此本次操作仅仅插入了d和e两个新成员。
(integer) 2
redis 127.0.0.1:6379> sismember myset a
#判断a是否已经存在,返回值为1表示存在。
(integer) 1
redis 127.0.0.1:6379> sismember myset f
#判断f是否已经存在,返回值为0表示不存在。
(integer) 0
redis 127.0.0.1:6379> smembers myset
#通过smembers命令查看插入的结果,从结果可以看出,输出的顺序和插入顺序无关。
1) "c"
2) "d"
3) "a"
4) "b"
5) "e"
redis 127.0.0.1:6379> scard myset
#获取Set集合中元素的数量。
(integer) 5
六.有序集合zset
1.概述
- a、有序集合,元素类型为Sting,元素具有唯一性,不能重复
- b、每个元素都会关联一个double类型的分数score(表示权重),可以通过权重的大小排序,元素的score可以相同
2.应用范围
- 可以用于一个大型在线游戏的积分排行榜。每当玩家的分数发生变化时,可以执行ZADD命令更新玩家的分数,此后再通过ZRANGE命令获取积分TOP10的用户信息。当然我们也可以利用ZRANK命令通过username来获取玩家的排行信息。最后我们将组合使用ZRANGE和ZRANK命令快速的获取和某个玩家积分相近的其他用户的信息
- Sorted-Set类型还可用于构建索引数据
3.操作
zadd 键 权重1 值1 权重2 值2 .... #score权重是可以重复的,元素值是不可以重复的
zrange 键 起始位置 终止位置 [withscores] #起始位置 0表示左边开始的第一个元素,终止位置 -1表示到最后一个元素
zrangebyscore 键 起始权重 终止权重 [limit N M] #查看指定权重范围的元素,按score从小到大,limit N M 表示只显示第N个之后的M个元素(不包括第N个元素)
zrevrange 键 起始位置 终止位置 #降序查看
zrevrangebyscore 键 起始权重 终止权重 [limit N M] #按score从大到小查看
zcard 键 #统计元素的数量
zcount 键 起始权重 终止权重 #统计指定权重范围的元素数量
zrem 键 值1 值2 ... #删除指定的元素
zincrby 键 权重 值 #添加新的元素或增加指定元素的权重
redis 127.0.0.1:6379> del myzset
(integer) 1
redis 127.0.0.1:6379> zadd myzset 1 one 2 two 3 three 4 four
(integer) 4
redis 127.0.0.1:6379> zrangebyscore myzset 1 2
#zrangebyscore key min max,获取分数 满足表达式1 <= score <= 2的成员。
1) "one"
2) "two"
redis 127.0.0.1:6379> zrangebyscore myzset (1 2
#获取分数满足表达式1 < score <= 2的成员。
1) "two"
redis 127.0.0.1:6379> zrangebyscore myzset -inf +inf limit 2 3
#-inf表示第一个成员(位置索引值最低的,即0),+inf表示最后一个成员(位置索引值最高的),limit后面的参数用于限制返回成员的值,2表示从位置索引等于2的成员开始,取后面3个成员。
1) "three"
2) "four"
redis 127.0.0.1:6379> zrangebyscore myzset 0 4 limit 2 3
redis 127.0.0.1:6379> zremrangebyscore myzset 1 2
#删除分数满足表达式1 <= score <= 2的成员,并返回实际删除的数量。
(integer) 2
redis 127.0.0.1:6379> zrange myzset 0 -1
#看出一下上面的删除是否成功。
1) "three"
2) "four"
redis 127.0.0.1:6379> zremrangebyrank myzset 0 1
#删除位置索引满足表达式0 <= rank <= 1的成员。
(integer) 2
redis 127.0.0.1:6379> zcard myzset
#查看上一条命令是否删除成功。
(integer) 0
七.通用命令
通用
type 键 查看键的数据类型
keys 键 * ? 查询键名,支持通配符 * ?
exists 键 判断键是否存在
expire 键 过期时间 为已存在的键设置过期时间
setex 键 过期时间 值 创建string类型的键并设置过期时间
ttl 键 查看键的生命周期时间,-1 永不过期,-2 已过期
rename 旧键 新键 重命名键名,会覆盖已存在的键
renamenx 旧键 新键 重命名键名,不会覆盖已存在的键
dbsize 统计当前库中键的总数
config set requirepass '密码' 设置/修改redis密码
config get requirepass 查看密码
auth '密码' 在redis里验证密码
select 库ID 切换库,默认库ID为 0~15
move 键 库ID 移动键到指定的库
flushdb 清空当前库(慎用)
flushall 清空所有库(慎用)
标签:127.0,0.1,redis,元素,数据类型,6379,integer,Redis
From: https://blog.csdn.net/F12138X/article/details/140035661