Redis 作为一个内存数据库已经被许许多多的公司使用,它的性能非常的优秀,读写速度支持非常快而且支持 10W 的 QPS 。今天我们就来学习下它的丰富的数据类型。
Redis 数据类型
Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(有序集合)。
string(字符串)
字符串类型是Redis的最基本数据结构。 字符串类型的值实际可以为字符串,数字,二进制,但是值最大不能超过512M。
keyvaluehelloworldcounter1bits10000100json{"id":1,"name":"xiaocai","age":18}
string命令
设置
set key value [EX seconds] [PX milliseconds] [NX|XX]
get key
> set name xiaocai
OK
> get name
"xiaocai"
过期
setex key seconds value
> set name1 redis1 ex 10 #10秒后过期
OK
> get name1
(nil)
> setex name2 10 redis2 #10秒后过期
OK
> get name2
"redis2"
> get name2
(nil)
> set name3 redis3 px 10 #10豪秒后过期
OK
> get name3
(nil)
不存在才能设置成功或者必须存在才能设置成功
> set hello world nx #不存在才能设置成功
OK
> set hello w nx #存在就设置失败
(nil)
> get hello
"world"
>set hello w xx #存在才能设置成功
OK
> set world hello xx #不存在就设置失败
(nil)
> get hello
"w"
> get world
(nil)
批量设置
mset key value [key value ...]
mget key [key ...]
> mset name1 redis1 name2 redis2
OK
> mget name1 name2
1) "redis1"
2) "redis2"
> mget name1 name2 name3
1) "redis1"
2) "redis2"
3) (nil)
计数
incr key
incrby key increment
> set age 18 #value只能为整数
OK
> incr age
(integer) 19
> incrby age -5
(integer) 14
> incrby age 10
(integer) 24
删除
del key [key ...]
> del age
(integer) 1
> get age
(nil)
内部编码
- int 8个字节的长整型
- embstr 小于等于39个字节的字符串
- raw 大于39个字节的字符串
> set port 6379
OK
> object encoding port
"int"
> set hello world
OK
> object encoding hello
"embstr"
> set longString abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz
OK
> object encoding hello
"raw"
> strlen longString
(integer) 52
list(列表)
list类型是用来存储多个有序的字符串。每列字符串称之为元素。一个list的最大存储为2^32-1个元素。可以对列表进行双端插入和弹出,也可以指定索引下标获取元素。
list命令
头部和尾部添加元素
lpush key value [value ...]
rpush key value [value ...]
lrange key start stop
> lpush letter "a"
(integer) 1
> lpush letter "b"
(integer) 2
> lpush letter "c"
(integer) 3
> lrange letter 0 -1
1)