Redis指令文档

◎目录

连接控制... 1

适合全体类型的命令... 1

处理 lists 的命令... 2

处理集合(sets)的命令(有索引无序序列)... 2

处理有序集合(sorted sets)的命令 (zsets). 2

排序(List, Set, Sorted Set)... 3

持久控制... 3

远程控制命令... 3

redis 目前提供五种数据类型:string,list,set,zset(sorted set)及hash。

协议... 4

注意事项:... 4

  

连接控制

QUIT 关闭连接

AUTH (仅限启用时)简单的密码验证

 

适合全体类型的命令

EXISTS key 判断一个键是否存在;存在返回 1;否则返回 0;

DEL key 删除某个 key,或是一系列 key;DEL key1 key2 key3 key4

TYPE key 返回某个 key 元素的数据类型 ( none:不存在,string:字符,list,set,zset,hash)

KEYS pattern 返回匹配的 key 列表 (KEYS foo*:查找 foo 开头的 keys) RANDOMKEY 随机获得一个已经存在的 key,如果当前数据库为空,则返回空字符串

RENAME oldname newname 更改 key 的名字,新键如果存在将被覆盖

RENAMENX oldname newname 更改 key 的名字,如果名字存在则更改失败

DBSIZE 返回当前数据库的 key 的总数

EXPIRE 设置某个 key 的过期时间(秒),(EXPIRE bruce 1000:设置 bruce 这个 key1000 秒后系统自动删除)注意:如果在还没有过期的时候,对值进行了改变,那么那个值会被清除。

TTL 查找某个 key 还有多长时间过期,返回时间秒

SELECT index 选择数据库

MOVE key dbindex 将指定键从当前数据库移到目标数据库 dbindex。成功返回 1;否则返回 0(源 数据库不存在 key 或目标数据库已存在同名 key);

FLUSHDB 清空当前数据库中的所有键 

FLUSHALL 清空所有数据库中的所有键 


处理字符串的命令

SET key value 给一个键设置字符串值。SET keyname datalength data (SET bruce 10 paitoubing: 保存 key 为 burce,字符串长度为 10 的一个字符串 paitoubing 到数据库),data 最大不可超过 1G。

GET key 获取某个 key 的 value 值。如 key 不存在,则返回字符串“nil”;如 key 的值不为字符串 类型,则返回一个错误。

GETSET key value 可以理解成获得的 key 的值然后 SET 这个值,更加方便的操作 (SET bruce 10 paitoubing,这个时候需要修改 bruce 变成 1234567890 并获取这个以前的数据 paitoubing,GETSET bruce 10 1234567890)

MGET key1 key2 … keyN 一次性返回多个键的值

SETNX key value SETNX 与 SET 的区别是 SET 可以创建与更新 key 的 value,而 SETNX 是如果 ke不存在,则创建 key 与 value 数据

MSET key1 value1 key2 value2 … keyN valueN 在一次原子操作下一次性设置多个键和值

MSETNX key1 value1 key2 value2 … keyN valueN 在一次原子操作下一次性设置多个键和值(目 标键不存在情况下,如果有一个以上的 key 已存在,则失败)

INCR key 自增键值

INCRBY key integer 令键值自增指定数值

DECR key 自减键值

DECRBY key integer 令键值自减指定数值

 

处理 lists 的命令

RPUSH key value 从 List 尾部添加一个元素(如序列不存在,则先创建,如已存在同名 Key 而非 序列,则返回错误)

LPUSH key value 从 List 头部添加一个元素

LLEN key 返回一个 List 的长度

LRANGE key start end 从自定的范围内返回序列的元素 (LRANGE testlist 0 2;返回序列 testlist

前 0 1 2 元素)

LTRIM key start end 修剪某个范围之外的数据 (LTRIM testlist 0 2;保留 0 1 2 元素,其余的删 除)

LINDEX key index 返回某个位置的序列值(LINDEX testlist 0;返回序列 testlist 位置为 0 的元素)

LSET key index value 更新某个位置元素的值

LREM key count value 从 List 的头(count 正数或尾(count 负数删除一定数(count) 匹配 value 的元素,返回删除的元素数量。

LPOP key 弹出 List 的第一个元素

RPOP key 弹出 List 的最后一个元素

RPOPLPUSH srckey dstkey 弹出 _srckey_ 中最后一个元素并将其压入 _dstkey_头部,key 不存在 或序列为空则返回“nil”

 

处理集合(sets)的命令(有索引无序序列)

SADD key member 增加元素到 SETS 序列,如果元(membe不存在则添加成功 1否则失败 0;(SADD testlist 3 \n one)

SREM key member 删除 SETS 序列的某个元素如果元素不存在则失败 0否则成功 1(SREM testlist 3 \N one)

SPOP key 从集合中随机弹出一个成员

SMOVE srckey dstkey member 把一个 SETS 序列的某个元素 移动到 另外一个 SETS 序列 (SMOVE testlist test 3\n two;从序列 testlist 移动元素 two 到 test 中testlist 中将不存在 two 元素) 

SCARD key 统计某个 SETS 的序列的元素数量

SISMEMBER key member 获知指定成员是否存在于集合中SINTER key1 key2 … keyN 返回 key1, key2, …, keyN 中的交集

SINTERSTORE dstkey key1 key2 … keyN 将 key1, key2, …, keyN 中的交集存入 dstkey

SUNION key1 key2 … keyN 返回 key1, key2, …, keyN 的并集

SUNIONSTORE dstkey key1 key2 … keyN 将 key1, key2, …, keyN 的并集存入 dstkey

SDIFF key1 key2 … keyN 依据 key2, …, keyN 求 key1 的差集。

官方例子:

key1 = x,a,b,c key2 = c

key3 = a,d

SDIFF key1,key2,key3 => x,b

SDIFFSTORE dstkey key1 key2 … keyN 依据 key2, …, keyN 求 key1 的差集并存入 dstkey

SMEMBERS key 返回某个序列的所有元素

SRANDMEMBER key 随机返回某个序列的元素

 

处理有序集合(sorted sets)的命令 (zsets)

ZADD key score member 添加指定成员到有序集合中,如果目标存在则更新 score(分值,排序用)

ZREM key member 从有序集合删除指定成员

ZINCRBY key increment member 如果成员存在则将其增加_increment_,否则将设置一个 score 为

_increment_的成员

ZRANGE key start end 返回升序排序后的指定范围的成员

ZREVRANGE key start end 返回降序排序后的指定范围的成员

ZRANGEBYSCORE key min max 返回所有符合 score >= min 和 score <= max 的成员 ZCARD key 返回 有序集合的元素数量 ZSCORE key element 返回指定成员的 SCORE 值 ZREMRANGEBYSCORE key min max 删除符合 score >= min 和 score <= max 条件的所有成员

 

排序(List, Set, Sorted Set)

SORT key BY pattern LIMIT start end GET pattern ASC|DESC ALPHA 按照指定模式排序集合或

List

 

 SORT mylist

默认升序 ASC


SORT mylist DESC


SORT mylist LIMIT 0 10

从序号 0 开始,取 10 条

 

SORT mylist LIMIT 0 10 ALPHA DESC

按首字符排序

 

SORT mylist BY weight_*

SORT mylist BY weight_* GET object_*

SORT mylist BY weight_* GET object_* GET #

 

SORT mylist BY weight_* STORE resultkey

将返回的结果存放于 resultkey 序列(List)

 

持久控制

SAVE 同步保存数据到磁盘

BGSAVE 异步保存数据到磁盘

LASTSAVE 返回上次成功保存到磁盘的 Unix 时间戳

SHUTDOWN 同步保存到服务器并关闭 Redis 服务器(SAVE+QUIT)

BGREWRITEAOF 当日志文件过长时重写日志文件

 

远程控制命令

INFO 提供服务器的信息和统计信息 

MONITOR 实时输出所有收到的请求 

SLAVEOF 修改复制选项

 

redis目前提供五种数据类型:string,list,set,zset(sorted set)及hash。

* string 是最简单的类型你可以理解成与 Memcached 一模一个的类型一个 key 对应一个 value, 其上支持的操作与 Memcached 的操 作类似。但它的功能更丰富。

* list 是一个链表结构,主要功能是 push、pop、获取一个范围的所有值等等。操作中 key 理解为 链表的名字。

* set 是集合,和我们数学中的集合概念相似,对集合的操作有添加删除元素,有对多个集合求交 并差等操作。操作中 key 理解为集合的名字。

* zset 是 set 的一个升级版本,他在 set 的基础上增加了一个顺序属性,这一属性在添加修改元素 的时候可以指定,每次指定后,zset 会自动重新按新的 值调整顺序。可以理解了有两列的 mysql 表,一列存 value,一列存顺序。操作中 key 理解为 zset 的名字。

* hash是Redis hash 是一个 string 类型的 field 和 value 的映射表.它的添加、 删除操作都是 O(1) (平均) 。hash 特别适合用于存储对象。 相较于将对象的每个字段存成单个 string 类型。 将一个对象存储在 hash 类型中会占用更少的内存,并且可以更方便的存取整个对象。省内存的原因是新建一个 hash 对象时开始是用 zipmap(又称为 small hash)来存储的。这个 zipmap 其实并不是 hash table,但是 zipmap 相比正常的 hash 实现可以节省不少 hash 本身需要的一些元数据存储开销。尽管 zipmap 的添加,删除,查找都是 O(n),但是由于一般对象的 field 数量都不太多。所以使用 zipmap 也是很快的,也就是说添加删除平均还是 O(1)。如果 field 或者 value的大小超出一定限制后, Redis 会在内部自动将 zipmap 替换成正常的 hash 实现. 这个限制可以在配置文件中指定

hash-max-zipmap-entries 64 #配置字段最多 64 个

hash-max-zipmap-value 512 #配置 value 最大为 512 字节

 

协议

redis目前只有基于 TCP 的文本协议,与 memcache 类似,有一些改进。 客户端通常发送命令 参数… 值字节数\r\n 值\r\n


服务端的返回,根据第一个字节,可以判断:

- 错误信息

+ 普通文本信息

$ 变长字节数,$6 表示 CRLF 之后有 6 个字节的字符

: 返回一个整数

* 返回组数,即*6 表示 CRLF 之后将返回 6 组变长字符

 

注意事项:

Key 不可包含空格或者回车符

Key 不要过长或过短,应使其有意义,如”comment:1234:reply.to”



anzhihe 安志合个人博客,版权所有 丨 如未注明,均为原创 丨 转载请注明转自:https://chegva.com/2438.html | ☆★★每天进步一点点,加油!★★☆ | 

您可能还感兴趣的文章!

发表评论

电子邮件地址不会被公开。 必填项已用*标注