Redis 数据类型

224 阅读5分钟

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

更多命令