Redis教程02[五大数据]

本文介绍redis中的五大基本数据类型及经常使用命令 |数据类型 | 说明 | |--|--| | String | 是Redis中最基本的数据类型,二进制安全的,它能够包含任意数据类型。如图片。Redis中String类型的数据上限的512M。 | |List | Redis列表是简单的字符串列表,按照插入顺序排序。你能够添加一个元素到列表的头部(左边)或者尾部(右边)一个列表最多能够包含 232 - 1 个元素 (4294967295, 每一个列表超过40亿个元素)。 | | Hash | 是一个string类型的field和value的映射表,hash特别适合用于存储对象。Redis 中每一个 hash 能够存储 232 - 1 键值对(40多亿)。 | | Hash | Set 是 String 类型的无序集合。集合成员是惟一的,这就意味着集合中不能出现重复的数据。Redis 中集合是经过哈希表实现的,因此添加,删除,查找的复杂度都是 O(1)。集合中最大的成员数为 232 - 1 (4294967295, 每一个集合可存储40多亿个成员)。 | | ZSet | 有序集合和集合同样也是string类型元素的集合,且不容许重复的成员。不一样的是每一个元素都会关联一个double类型的分数。redis正是经过分数来为集合中的成员进行从小到大的排序。有序集合的成员是惟一的,但分数(score)却能够重复。集合是经过哈希表实现的,因此添加,删除,查找的复杂度都是O(1)。 集合中最大的成员数为 232 - 1 (4294967295, 每一个集合可存储40多亿个成员)。|正则表达式

启动redis服务并登录客服端 在这里插入图片描述redis

string介绍

通用命令

五种数据类型的数据结构差别因此命令也不一样,可是也有一些相通的命令,在这里简单介绍: 建立一个简单的k/v对数据库

127.0.0.1:6379> set name xn
OK

在redis中默认有16个数据库,编号0-15,正常状况下,用户登录后首先看到的是0号数据库,能够手动换到其余数据库:数组

select

127.0.0.1:6380> set name zhangsan
OK
127.0.0.1:6380> select 4
OK
127.0.0.1:6380[4]> get name
(nil)
127.0.0.1:6380[4]> select 0
OK
127.0.0.1:6380> get name
"zhangsan"

del命令

该命令用于存在key删除key安全

127.0.0.1:6379> del name
(integer) 1
127.0.0.1:6379> del name
(integer) 0

dump命令

序列化key,并返回被序列化的值数据结构

127.0.0.1:6379> dump name
"\x00\x03dpb\t\x00\xe5\xa2\xc4\xd1\xfc\xb2\xd9\xcb"
127.0.0.1:6379> dump name1
(nil)

若是key不存在就返回nildom

exists命令

检查key是否存在3d

127.0.0.1:6379> exists name
(integer) 1
127.0.0.1:6379> exists name1
(integer) 0

1表示存在,o表示不存在code

ttl命令

以秒为单位,返回key的剩余时间对象

127.0.0.1:6379> ttl name
(integer) -1
127.0.0.1:6379> ttl name1
(integer) -2

-2表示key不存在,-1表示没有设置有效时间,不会过时,咱们能够经过EXPIRE key 设置有效时间

expire命令

是指有效时间,单位为秒

127.0.0.1:6379> expire name 120
(integer) 1
127.0.0.1:6379> ttl name
(integer) 112
127.0.0.1:6379> ttl name
(integer) 10
127.0.0.1:6379> ttl name
(integer) 7
127.0.0.1:6379> ttl name
(integer) -2

112是剩余的有效时间

pexpire命令

一样是设置过时时间,只是单位为毫秒

127.0.0.1:6379> pexpire name 100
(integer) 1
127.0.0.1:6379> ttl name
(integer) -2

-2就表示已经不存在了

pttl

和ttl命令同样,只是返回单位为毫秒

127.0.0.1:6379> pexpire name 100000
(integer) 1
127.0.0.1:6379> ttl name
(integer) 91
127.0.0.1:6379> pttl name
(integer) 84601

keys

经过正则表达式查找符合条件的key

127.0.0.1:6379> set age 18
OK
127.0.0.1:6379> set sex 男
OK
127.0.0.1:6379> set address 深圳
OK
127.0.0.1:6379> keys *
1) "age"
2) "address"
3) "sex"

key * 查询全部的key

randomkey命令

从当前数据库随机返回一个key

127.0.0.1:6379> randomkey
"address"
127.0.0.1:6379> randomkey
"age"
127.0.0.1:6379> randomkey
"sex"
127.0.0.1:6379> randomkey
"age"

type命令

返回key对应的数据类型

127.0.0.1:6379> type name
none
127.0.0.1:6379> type age
string
127.0.0.1:6379> type sex
string

不存在的返回none

rename命令

修改key的名称

127.0.0.1:6379> rename age age1
OK
127.0.0.1:6379> exists age
(integer) 0
127.0.0.1:6379> exists age1
(integer) 1

flushdb

清空当前库

flushall

清空全部库

string类型之BIT

Redis中字符串的存储方式都是以二进制的方式存储的。 好比:

127.0.0.1:6379> set k1 a
OK

k1的值为a,对应的ascii码是97,转换为二进制就是01100001。BIT命令就是对这个二进制数据进行操做的 | 命令 | 说明 | |--|--| |getbit | 获取二级制中对应偏移量的值 | |setbit | 设置对应二进制位的值 | |bitcount | 统计二进制中位中为1的个数 | | bitop |对二进制数据作位元操做,与,或,非,异或操做 | |bitpos | 返回字符串里面第一个被设置为1或者0的bit位|

GetBit命令

用于key所储存的字符串值,获取指定偏移量的为(bit)

127.0.0.1:6379> set k1 a
OK
127.0.0.1:6379> getbit k1 0
(integer) 0
127.0.0.1:6379> getbit k1 1
(integer) 1
127.0.0.1:6379> getbit k1 2
(integer) 1
127.0.0.1:6379> getbit k1 3
(integer) 0
127.0.0.1:6379> getbit k1 4
(integer) 0
127.0.0.1:6379> getbit k1 5
(integer) 0
127.0.0.1:6379> getbit k1 6
(integer) 0
127.0.0.1:6379> getbit k1 7
(integer) 1

当偏移量 OFFSET 比字符串值的长度大,或者 key 不存在时,返回 0

SetBit命令

用于对 key 所储存的字符串值,设置或清除指定偏移量上的位(bit),返回的结果是该位上原来的bit值。好比咱们设置 k1为a,k2为c,a对应的ASCII码为97(01100001),c对应的ASCII码为99(01100011),相差了一个1,如此咱们就能够经过setbit来调整

127.0.0.1:6379> set k2 c
OK
127.0.0.1:6379> get k1
"a"
127.0.0.1:6379> get k2
"c"
127.0.0.1:6379> setbit k1 6 1
(integer) 0
127.0.0.1:6379> get k1
"c"

如此咱们就将k1的值快速调整为了c

BitCount命令

用来统计二进制中为1的个数,好比a(97 01100001)为3,c(99 01100011)为4.

127.0.0.1:6379> get k1
"a"
127.0.0.1:6379> get k2
"c"
127.0.0.1:6379> bitcount k1
(integer) 3
127.0.0.1:6379> bitcount k2
(integer) 4

BitOp命令

对一个或多个保存二进制位的字符串 key 进行位元操做,并将结果保存到 destkey 上。BITOP 命令支持 AND(与) 、 OR(或) 、 NOT(非) 、 XOR(异或)运算。好比a 01100001和c 01100011进行相关运算

127.0.0.1:6379> get k1
"a"
127.0.0.1:6379> get k2
"c"
127.0.0.1:6379> bitop and k3 k1 k2
(integer) 1
127.0.0.1:6379> get k3
"a"
127.0.0.1:6379> bitop or k4 k1 k2
(integer) 1
127.0.0.1:6379> get k4
"c"
127.0.0.1:6379> bitop xor k5 k1 k2
(integer) 1
127.0.0.1:6379> get k5
"\x02"

not运算注意参数个数

127.0.0.1:6379> bitop not k6 k1
(integer) 1
127.0.0.1:6379> get k6
"\x9e"

BitPos命令

返回字符串里面第一个被设置为1或者0的bit位。 返回一个位置,把字符串当作一个从左到右的字节数组,第一个符合条件的在位置0,其次在位置8,等等。仍是以a为例01100001

127.0.0.1:6379> bitpos k1 1
(integer) 1
127.0.0.1:6379> bitpos k1 0
(integer) 0

其余五个命令就不一一演示

Hash介绍

在实际开发过程当中咱们确定会碰到不少须要存储对象的需求,此时hash就比较合适了。hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。 Redis 中每一个 hash 能够存储 232 - 1 键值对(40多亿)。

命令 说明
hset 设置key中字段的值
hget 获取key中字段的值
hmset 批量设置key中的字段
hmget 批量获取key中字段的值
hdel 删除key中指定的字典
hsetnx 设置key中的字段的值,若是字段存在就忽略
hvals 获取key中全部的字段的值
hkeys 获取key中的全部的字段
hgetall 获取key中的全部的字段及值
hexists 判断key中的字段是否存在
hincrby 将key中的字段增长特定的值
hincrbyfloat 和hincrby相似增长的float类型的数据
hlen 获取key中的字段的个数
hstrlen 获取key中某个字段的值得长度

List类型命令介绍

列表是简单的字符串列表,按照插入顺序排序。你能够添加一个元素到列表的头部(左边)或者尾部(右边) 一个列表最多能够包含 232 - 1 个元素 (4294967295, 每一个列表超过40亿个元素)。 | 命令 | 说明 | |--|--| |lpush| 向列表头部添加一个或多个元素| |lrange| 获取列表中指定的元素0第一个,-1最后一个| |rpush |向列表尾部添加一个或多个元素| |llen |获取列表长度| |lset |经过index设置列表的值| |rpop |移除列表最后一个元素,并返回| |lpop |移除列表头部元素,并返回| |lindex |获取列表中对应下标的值| |ltrim |截取列表对应的元素| |blpop |lpop的阻塞版| |brpop |rpop的阻塞版| |rpoplpush |移除一个列表的最后一个元素,并将该元素添加到另外一个列表的头部| |brpoplpush | rpoplpush的阻塞版本|

Set集合命令介绍

集合中最大的成员数为 232 - 1 (4294967295, 每一个集合可存储40多亿个成员) | 命令 |说明 | |--|--| |sadd |添加一个或多个元素到集合中,若是集合中存在该元素则忽略| |scard | 返回集合中的元素的个数| |sismember |判断集合中是否含有某元素| |smembers |获取集合中的全部的元素| |srem | 删除集合中指定的元素| |srandmember | 随机返回集合中的元素,版本2.6后在命令以后能够跟一个count。指定随机返回的元素个数| |spop |和srandmember相似,只是spop会将获取的元素移除而srandmember不会移除元素| |smove | 将元素从一个集合移动到另外一个集合中| |sdiff |返回两个集合的差集| |sdiffstore | 和sdiff相似,不一样的是会将差集结果保存起来| |sinter| 获取两个集合的交集| |sinterstore |和sinter相似,不一样的是将结果保存起来了| |sunion | 获取两个集合的并集| |sunionstore | 获取两个集合的并集并保存起来|

Zset集合命令介绍

有序集合和集合同样也是string类型元素的集合,且不容许重复的成员。 不一样的是每一个元素都会关联一个double类型的分数。redis正是经过分数来为集合中的成员进行从小到大的排序。 有序集合的成员是惟一的,但分数(score)却能够重复

命令 说明
zadd 向有序集合中添加一个或多个 分数/元素对
zscore 获取有序集合中元素对应的分数
zrange 获取集合中的元素,若是加上withscores则会连同分数一并返回
zrevrange 和zrange相似,只是将结果倒序了
zcard 返回集合中元素的个数
zcount 统计集合中分数在min和max之间的元素个数
zrangebyscore 能够根据score范围查找元素
zrank 获取元素在集合中的排名,从小到大,最小的是0
zrevrank 获取元素在集合中的排序,从大到小
zincrby 给元素增长分数,若是不存在就新建立元素,并赋予对应的分数
zinterstore 计算给定的一个或多个有序集的交集并将结果集存储在新的有序集合 key 中
zrem 从集合中弹出一个元素
zlexcount 计算有序集合中指定字典区间内成员数量
zrangebylex 获取指定区间的元素,分数必须相同
相关文章
相关标签/搜索