Redis支持5种数据类型
string(字符串)、hash(哈希)、list(列表)、set(集合)、zset(有序集合)
都是以键值对(key-value)形式存储数据的
string(字符串)
string类型是二进制安全的,可以包含任何数据。1个key对应1个value。
比如:字符串、数字、二进制(图片、音频、视频)、序列化的对象等。
string类型的一个键最大能存储512MB数据。
命令
**设值命令 set、setex、**mset
语法:set 单个设值:set key value
setex 单个设值,带超时时间:setex key time value // time为秒数
mset 批量设值:mset key1 value1 key2 value2 .. keyN valueN
知识点:批量设置有什么好处
set name zhangsan ex 10 // ex:多少秒后过期 px:多少毫秒后过期(报错了,是不是因为版本太低,有时间再看)
获值命令 get、mget
语法:获取单个值:get key
批量获取:mget key1 key2 .. keyN
**常用命令 计数 incr、incrby、**decr、decrby
语法:incr 值加1:incr key // value必须为整数否则返回错误,如果没有key,返回1
incrby 值加指定数:incrby key num // num为整数,规则同incr
decr 值减1:decr key // value必须为整数否则返回错误,如果没有key,返回-1
decrby 值减指定数:decrby key num // num为整数,规则同decr
常用命令 字符串操作 append、strlen、getrange
语法:append 追加字符串:append key value // 如果key不存在,等同于set命令
strlen 获取长度:strlen key
getrange 截取:getrange key index1 index2 // index从0开始,包括前后索引值
hash(哈希)
key为string,value为键值对集合。
是一个string类型的field和value的映射表,特别适合用于存储对象。
一个hash可以存储 2³² - 1个键值对(40多亿)
命令
设值命令 hset、hmset
语法:hset 给一个字段赋值:hset key field1 value1
hmset 给多个字段赋值:hmset key field1 value1 field2 value2 .. fieldN valueN
获值命令 hget、hmget**、hkeys、hvals、hgetall**
语法:hget 获取一个字段的值:hget key field
hmget 获取多个字段的值:hmget key field1 .. fieldN // 不存在的字段返回null
hkeys 获取所有字段名:hkeys key // 返回所有的字段名
hvals 获取所有字段的值:hvals key // 返回所有字段的值
hgetall 获取所有字段名和值:hgetall key
删字段命令 hdel
语法:hdel 删除一个或多个字段:hdel key field1 field2 .. fieldN // 返回删除的数量
常用命令 hlen、hexists、hincrby、hincrbyfloat
语法:hlen 计数:hlen key // 返回key中字段的数量
hexists 判断一个字段是否存在:hexists key field // 返回值:存在1,不存在0
hincrby 给字段值增加:hincrby key field num // 给field的值加num;field为整数
hincrbyfloat 给字段值增加:hincrbyfloat key field num // field为浮点数
list(列表)
用来存储多个string类型,一个列表最多可存 2³² - 1个元素
有序、可重复
命令
添加命令 lpush、rpush、linsert .. before/after
语法:lpush 从左到右插入:lpush key a b c
// 从左向右插入abc 返回插入的个数 2.4版本以前只接受一个值,key不存在时创建key后插入,key存在但不是list类型时会报错
rpush 从右到左插入:rpush key c b a // 规则同lpush
linsert .. before/after 在某个元素前/后插入元素:linsert key before a apple
// 在a前插入apple;左边是前边
获取命令 lrange、lindex
语法:lrange 获取指定区间的元素:lrange key 0 2
// 获取索引0到2的元素;第二个索引为-1时,获取所有元素;0为最左边第一个
lindex 通过索引获取元素:lindex key -1 // -1最右边一个,-2倒数第二个,依次类推
删除命令 lpop、rpop
lpop 删除并返回最左边一个元素:lpop key
rpop 删除并返回最右边一个元素:rpop key
常用命令 llen
语法:llen 获取列表长度:llen key
set(集合)
用来存储多个string类型,一个set集合可以存储 2³² - 1个元素
无序、不可重复
除了支持增删改查,还支持交集、并集、差集
命令
添加命令 sadd
语法:sadd 添加多个元素:sadd key value1 value2 .. valueN // 返回添加成功的个数
获取命令 smembers
语法:smembers 获取所有元素:smembers key
删除命令 srem
语法:srem 删除多个元素:srem key value1 value2 .. valueN
// 返回删除的个数;2.4 版本(不包括2.4)以前只接受删除单个元素
常用命令 scard
语法:scard 获取元素个数:scard key
zset(有序集合)
有序集合和集合一样也是string类型元素的集合。可以存储 2³² - 1个元素
有序、不可重复
每个元素都会关联一个double类型的分数,通过分数来为集合中的成员进行从小到大的排序。
有序集合的成员是唯一的,但分数(score)可以重复。
命令
添加命令 zadd
语法:zadd 添加多个元素:zadd key score1 value1 .. scoreN valueN
// 添加新元素或修改已有元素的分数;返回添加或修改的数量;2.4 版本(不包括2.4)以前只能添加一个元素
获取命令 zrange、zrank、zrevrank
语法:zrange 获取元素:zrange key 0 -1 // 获取全部元素(不带分数)
zrange key 0 -1 withscore // 获取全部元素(带分数)
zrank 获取排名:zrank key value // 分数越高排名越靠后,排名从0开始
zrevrank 获取反排名:zrevrank key value // 分数越高排名越靠前,排名从0开始
常用命令 zcard
语法:zcard 获取元素个数:zcard key