Redis支持的数据类型:字符串(string)、列表(list)、哈希(hash)、集合(set)、有序集合(sorted set)、HyperLogLog、Geo。其中HyperLogLog、Geo在4.x版本中出现。
本章主要介绍字符串(string)、列表(list)、哈希(hash)、集合(set)三种类型的常用操作。
1.字符串(string)类型常用操作:
操作 | 作用 | 举例 | 结果 |
---|---|---|---|
SET |
赋值 | SET "test key" "test value" | 成功则返回 ok |
GET |
取值 | GET "test key" | key存在,则返回value值,不存在,则返回nil |
STRLEN | 获取字符串长度 | GET "test key" | 存在,则返回value的长度,不存在,则返回0 |
APPEND |
末尾追加字符串 | APPEND "test key" "append value" | 返回追加后字符串长度,如果key不存在,则新建一个空字符串并追加 |
SETRANGE |
覆盖字符串部分 | SETRANGE "test key" 5 "new value" | 覆盖从偏移量位置开始所有字符:如原字符串为abcde,offset为3,新字符串为gggg,则替换后为:abcgggg。偏移量从0开始算。 |
SETNX |
区别于SET,SET当key存在时,则会覆盖,而SETNX,当key存在,则不会覆盖 | SETNX "test | key" "test value"|key存在,则返回0且不覆盖原来的值,key不存在,则赋值 |
MSET |
一次通讯,批量设置多个键值对,整个操作是原子性的 | MSET "test key 1" "test value 1" "test key 2" "test value2" | 成功则返回OK |
MGET |
批量获取多个值 | MGET "test key 1" "test key 2" | 返回对应的多个值 |
2.列表(list)类型常用操作:
操作 | 作用 | 举例 | 结果 |
---|---|---|---|
LPUSH |
在列表的左端插入值 | LPUSH "test list" "aa" "bb" "cc" | 返回添加后列表的总数 |
LRANGE |
从列表左侧获取开始位置到结束位置的值 | LRANGE "test list" 0 1 | 返回开始到结束位置的数据。以前一个例子为例,则返回 "cc" "bb"。如果要返回全部数据,则stop设置为-1。 |
RPUSH |
从列表右端插入值 | RPUSH "test new list" "aa" "bb" "cc" | 返回添加后列表的总数 |
LINSERT |
在指定的某个值左侧(BEFORE)或右侧(ARTER)插入值 | LINSERT "test new list" BEFORE "bb" "abc" | 在值"bb"前插入"abc",并返回插入后列表长度 |
LINDEX |
获取列表中位于索引位置的值 | LINDEX "test new list" 3 | 返回位置3的值;注:下标从0开始 |
LPOP |
从列表的左端移除第一个元素 | LPOP "test new list" | 存在key,则返回移除的元素,不存在,则返回nil |
RPOP |
从列表右侧移除 | ||
LTRIM |
用于删除列表中的多个元素,只保留start和end索引所指定范围的元素 | LTRIM "test new list" 1 2 | 成功删除,并返回OK:例如原列表为 "aa","bb","cc","dd","ee";执行案例语句,则列表为:"bb","cc" |
LSET |
设置列表中指定索引位置处的值 | LSET "test new list" 1 "abc" | 成功,则返回OK,越界:则返回 ERR index out of range |
只有列表存在时,才将元素插入到列表中,则可以使用LPUSHX或RPUSHX
3. 哈希(hash)类型常用操作
操作 | 作用 | 举例 | 结果 |
---|---|---|---|
HMSET |
设置Hash值 | HMSET "test hash key" "name" "张三" "age" 23 | 成功,则返回OK |
HMGET |
从哈希中获取多个字段对应的值 | HMGET "test hash key" "name" "age" | 返回对应key各字段的值,不存在的,则返回nil |
HGET |
从哈希中获取某个字段对应的值 | HGET "test hash key" "name" | 返回对应字段的值,不存在,则返回nil |
HEXISTS |
测试一个哈希中是否存在某个字段 | HEXISTS "test hash key" name | 存在则返回1,不存在,则返回0 |
HGETALL |
获取一个哈希中所有字段和值 | HGETALL "test hash key" | 返回所有字段和值 |
HSET |
设置某个字段的值,用于修改现有字段的值或添加新的字段 | HSET "test hash key" "name" "admin" | 修改返回0,新增返回1 |
HDEL |
删除哈希中的字段 | HDEL "test hash key" "name" | 返回删除的字段个数 |
HSETNX |
仅在字段不存在的情况下才设置值 | ||
HSCAN |
是一种基于指针的迭代器,增量地迭代遍历元素,且不会造成服务器堵塞。每次调用时,需要制定一个游标(从0开始)。当一次HSCAN结束后,Redis会返回新的游标及元素列表。若新的游标为0,则表示迭代结束。功能类似于分页查询。 | HSCAN "test hash key" 0 MATCH address COUNT 5 | 返回新的游标及元素列表 |
关于HSCAN命令中,COUNT参数可能不起作用。主要是HSCAN命令对于字段较多时进行使用,字段少时,可能设置了,也不会起作用。