1 Redis的数据类型(Data Types)
1.1 字符串(Strings)
字符串是一种最基本的Redis值类型。Redis字符串是二进制安全的(存储为字节码,内部不做编码)。一个字符串类型的值最多能存储512M字节的内容。
1.2 列表(Lists)
Redis列表是简单的字符串列表,按照插入顺序排序。 你可以添加一个元素到列表的头部(左边LPUSH
)或者尾部(右边RPUSH
)。一个列表最多可以包含232-1个元素。特性就是支持常数时间的 插入和靠近头尾部元素的删除。Lists是链表实现的一个双端队列。
1.3 集合(Sets)
Redis集合是一个无序的字符串合集。你可以以O(1) 的时间复杂度完成 添加,删除以及测试元素是否存在的操作。Redis集合有着不允许相同成员存在的优秀特性。一个集合最多可以包含232-1个元素。
1.4 有序集合(Sorted sets)
Redis有序集合和Redis集合类似,但是每个字符串元素都关联到一个叫score浮动数值(floating number value)。里面的元素总是通过score进行着排序。使用有序集合,你可以非常快地(O(log(N)))完成添加,删除和更新元素的操作。
1.5 哈希(Hashes)
Redis Hashes是字符串字段和字符串值之间的映射,所以它们是完美的表示对象的数据类型。一个hash最多可以包含232-1 个key-value键值对。
1.6 Bit arrays (或者说 simply bitmaps)
位图不是实际的数据类型,而是在String类型上定义的一组面向位的操作: 可以设置和清除单独的 bits,数出所有设为 1 的 bits 的数量,找到最前的被设为 1 或 0 的 bit,等等。可以设置多达2 ^ 32个不同的位
1.7 HyperLogLogs
HyperLogLog是一种概率数据结构,用于对唯一事物进行计数,得出标准误差小于1%的估计度量,被编码为Redis字符串。该算法的神奇之处在于,消耗的内存量最坏情况仅仅只有12k字节。每次看到一个新元素时,可以使用PFADD
将它添加到计数中,使用PFCOUNT
获取计数。
2 常用命令
2.1 Keys
KEYS pattern # 查找所有符合给定模式pattern的 key(类似文件名匹配)
DEL key [key ...] # 删除指定的key,返回存在的个数
EXISTS key [key ...] # 查询key是否存在,返回存在的个数
TYPE key # 获取key的存储类型: string, list, set, zset, hash, none
RENAME key newkey # 将一个key重命名
RENAMENX key newkey # 重命名一个key,新的key必须是不存在的key
RANDOMKEY # 返回一个随机的key
EXPIRE key seconds # 设置一个key的过期的秒数
EXPIREAT key timestamp # 设置一个UNIX时间戳的过期时间
PEXPIRE key milliseconds # 设置key的有效时间以毫秒为单位
PEXPIREAT key milliseconds-timestamp # 设置key的到期UNIX时间戳以毫秒为单位
TTL key # 获取key的有效时间(单位:秒)
PTTL key # 获取key的有效毫秒数
PERSIST key # 移除key的过期时间
SORT key [BY pattern] [LIMIT offset count] [GET pattern [GET pattern ...]] [ASC|DESC] [ALPHA] [STORE destination] # 对队列、集合、有序集合排序
DUMP key # 导出key的值
MOVE key db # 移动一个key到另一个数据库
MIGRATE host port key destination-db timeout [COPY] [REPLACE] # 原子性的将key从redis的一个实例移到另一个实例
OBJECT subcommand [arguments [arguments ...]] # 检查内部的再分配对象
RESTORE key ttl serialized-value [REPLACE] # Create a key using the provided serialized value, previously obtained using DUMP.
WAIT numslaves timeout # Wait for the synchronous replication of all the write commands sent in the context of the current connection
SCAN cursor [MATCH pattern] [COUNT count] # 增量迭代key
2.2 Strings
GET key # 返回key的value
MGET key [key ...] # 获得所有key的值
SET key value [EX seconds] [PX milliseconds] [NX|XX] # 设置一个key的value值
MSET key value [key value ...] # 设置多个key value
SETNX key value # 设置的一个key的值,只有当该key不存在
MSETNX key value [key value ...] # 设置多个key value,仅当key不存在时
SETEX key seconds value # 设置key-value并设置过期时间(单位:秒)
PSETEX key milliseconds value # 设置key-value并设置过期时间(单位:毫秒)
INCR key # 执行原子加1操作
INCRBY key increment # 执行原子增加一个整数
INCRBYFLOAT key increment # 执行原子增加一个浮点数
DECR key # 整数原子减1
DECRBY key decrement # 原子减指定的整数
GETSET key value # 设置一个key的value,并获取设置前的值
STRLEN key # 获取指定key值的长度
APPEND key value # 追加一个值到key上
GETRANGE key start end # 获取存储在key上的值的一个子字符串
SETRANGE key offset value # Overwrite part of a string at key starting at the specified offset
SETBIT key offset value # Sets or clears the bit at offset in the string value stored at key
BITCOUNT key [start end] # 统计字符串指定起始位置的字节数
BITFIELD key [GET type offset] [SET type offset value] [INCRBY type offset increment] [OVERFLOW WRAP|SAT|FAIL] # Perform arbitrary bitfield integer operations on strings
BITOP operation destkey key [key ...] # Perform bitwise operations between strings
BITPOS key bit [start] [end] # Find first bit set or clear in a string
GETBIT key offset # 返回位的值存储在关键的字符串值的偏移量。
2.3 Lists
LRANGE key start stop # 从列表中获取指定返回的元素
LLEN key # 获得队列(List)的长度
LPUSH key value [value ...] # 从队列的左边入队一个或多个元素
LPUSHX key value # 当队列存在时,从队到左边入队一个元素
RPUSH key value [value ...] # 从队列的右边入队一个元素
RPUSHX key value # 从队列的右边入队一个元素,仅队列存在时有效
LPOP key # 从队列的左边出队一个元素
RPOP key # 从队列的右边出队一个元
LSET key index value # 设置队列里面一个元素的值
LREM key count value # 从列表中删除元素
LTRIM key start stop # 修剪到指定范围内的清单
LINSERT key BEFORE|AFTER pivot value # 在列表中的另一个元素之前或之后插入一个元素
BLPOP key [key ...] timeout # 删除,并获得该列表中的第一元素,或阻塞,直到有一个可用
BRPOP key [key ...] timeout # 删除,并获得该列表中的最后一个元素,或阻塞,直到有一个可用
RPOPLPUSH source destination # 删除列表中的最后一个元素,将其追加到另一个列表
BRPOPLPUSH source destination timeout # 弹出一个列表的值,将它推到另一个列表,并返回它;或阻塞,直到有一个可用
2.4 Sets
SCARD key # 获取集合里面的元素数量
SMEMBERS key # 获取集合里面的所有元素
SISMEMBER key member # 确定一个给定的值是一个集合的成员
SRANDMEMBER key [count] # 从集合里面随机获取一个元素
SSCAN key cursor [MATCH pattern] [COUNT count] # 迭代set里面的元素
SADD key member [member ...] # 添加一个或者多个元素到集合(set)里
SREM key member [member ...] # 从集合里删除一个或多个元素
SPOP key [count] # 删除并获取一个集合里面的元素
SMOVE source destination member # 移动集合里面的一个元素到另一个集合
SDIFF key [key ...] # 获得多个集合的差集
SDIFFSTORE destination key [key ...] # 获得多个集合的差集,并将结果存入新的set里面
SINTER key [key ...] # 获得多个集合的交集
SINTERSTORE destination key [key ...] # 获得多个集合的交集,并将结果存入新的set里面
SUNION key [key ...] # 获得多个集合的并集
SUNIONSTORE destination key [key ...] # 获得多个集合的并集,并将结果存入新的set里面
2.5 Sorted Sets
ZCARD key # 获取一个排序的集合中的成员数量
ZCOUNT key min max # 返回分数范围内的成员数量
ZSCORE key member # 获取成员在排序设置相关的比分
ZLEXCOUNT key min max # 返回成员之间的成员数量
ZSCAN key cursor [MATCH pattern] [COUNT count] # 迭代sorted sets里面的元素
ZRANK key member # 确定在排序集合成员的索引
ZREVRANK key member # 确定指数在排序集的成员,下令从分数高到低
ZRANGE key start stop [WITHSCORES] # 根据指定的index返回,返回sorted set的成员列表
ZREVRANGE key start stop [WITHSCORES] # 在排序的设置返回的成员范围,通过索引,下令从分数高到低
ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count] # 返回有序集合中指定分数区间内的成员,分数由高到低排序。
ZADD key [NX|XX] [CH] [INCR] score member [score member ...] # 添加到有序set的一个或多个成员,或更新的分数,如果它已经存在
ZPOPMAX key [count] # Remove and return members with the highest scores in a sorted set
ZPOPMIN key [count] # Remove and return members with the lowest scores in a sorted set
ZINCRBY key increment member # 增量的一名成员在排序设置的评分
ZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX] # 相交多个排序集,导致排序的设置存储在一个新的关键
ZRANGEBYLEX key min max [LIMIT offset count] # 返回指定成员区间内的成员,按字典正序排列, 分数必须相同。
ZREVRANGEBYLEX key max min [LIMIT offset count] # 返回指定成员区间内的成员,按字典倒序排列, 分数必须相同
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count] # 返回有序集合中指定分数区间内的成员,分数由低到高排序。
ZUNIONSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX] # 添加多个排序集和导致排序的设置存储在一个新的关键
ZREM key member [member ...] # 从排序的集合中删除一个或多个成员
ZREMRANGEBYLEX key min max # 删除名称按字典由低到高排序成员之间所有成员。
ZREMRANGEBYRANK key start stop # 在排序设置的所有成员在给定的索引中删除
ZREMRANGEBYSCORE key min max # 删除一个排序的设置在给定的分数所有成员
2.6 Hashes
HEXISTS key field # 判断field是否存在于hash中
HGET key field # 获取hash中field的值
HKEYS key # 获取hash的所有字段
HLEN key # 获取hash里所有字段的数量
HGETALL key # 从hash中读取全部的域和值
HMGET key field [field ...] # 获取hash里面指定字段的值
HSTRLEN key field # 获取hash里面指定field的长度
HVALS key # 获得hash的所有值
HDEL key field [field ...] # 删除一个或多个Hash的field
HINCRBY key field increment # 将hash中指定域的值增加给定的数字
HINCRBYFLOAT key field increment # 将hash中指定域的值增加给定的浮点数
HSET key field value # 设置hash里面一个字段的值
HMSET key field value [field value ...] # 设置hash字段值
HSETNX key field value # 设置hash的一个字段,只有当这个字段不存在时有效
HSCAN key cursor [MATCH pattern] [COUNT count] # 迭代hash里面的元素
2.7 Others
# HyperLogLog
PFADD key element [element ...] # 将指定元素添加到HyperLogLog
PFCOUNT key [key ...] # Return the approximated cardinality of the set(s) observed by the HyperLogLog at key(s).
PFMERGE destkey sourcekey [sourcekey ...] # Merge N different HyperLogLogs into a single one.
# Geo
GEOADD key longitude latitude member [longitude latitude member ...] # 添加一个或多个地理空间位置到sorted set
GEOHASH key member [member ...] # 返回一个标准的地理空间的Geohash字符串
GEOPOS key member [member ...] # 返回地理空间的经纬度
GEODIST key member1 member2 [unit] # 返回两个地理空间之间的距离
GEORADIUS key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] # 查询指定半径内所有的地理空间元素的集合。
GEORADIUSBYMEMBER key member radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] # 查询指定半径内匹配到的最大距离的一个地理空间元素。
# Pub/Sub
PSUBSCRIBE pattern [pattern ...] # Listen for messages published to channels matching the given patterns
PUBSUB subcommand [argument [argument ...]] # Inspect the state of the Pub/Sub subsystem
PUBLISH channel message # 发布一条消息到频道
PUNSUBSCRIBE [pattern [pattern ...]] # 停止发布到匹配给定模式的渠道的消息听
SUBSCRIBE channel [channel ...] # 监听频道发布的消息
UNSUBSCRIBE [channel [channel ...]] # 停止频道监听
# Scripting
EVAL script numkeys key [key ...] arg [arg ...] # 在服务器端执行 LUA 脚本
EVALSHA sha1 numkeys key [key ...] arg [arg ...] # 在服务器端执行 LUA 脚本
SCRIPT DEBUG YES|SYNC|NO # Set the debug mode for executed scripts.
SCRIPT EXISTS script [script ...] # Check existence of scripts in the script cache.
SCRIPT FLUSH # 删除服务器缓存中所有Lua脚本。
SCRIPT KILL # 杀死当前正在运行的 Lua 脚本。
SCRIPT LOAD script # 从服务器缓存中装载一个Lua脚本
# Transactions
DISCARD # 丢弃所有 MULTI 之后发的命令
EXEC # 执行所有 MULTI 之后发的命令
MULTI # 标记一个事务块开始
UNWATCH # 取消事务命令
WATCH key [key ...] # 锁定key直到执行了 MULTI/EXEC 命令
# Connection
AUTH password # 验证服务器命令
ECHO message # 回显输入的字符串
PING # Ping 服务器
QUIT # 关闭连接,退出
SELECT index # 选择新数据库
SWAPDB index index # Swaps two Redis databases
# Server
BGREWRITEAOF # 异步重写追加文件命令
BGSAVE # 异步保存数据集到磁盘上
CLIENT KILL [ip:port] [ID client-id] [TYPE normal|slave|pubsub] [ADDR ip:port] [SKIPME yes/no] # 关闭客户端连接
CLIENT LIST # 获得客户端连接列表
CLIENT GETNAME # 获得当前连接名称
CLIENT ID # Returns the client ID for the current connection
CLIENT PAUSE timeout # 暂停处理客户端命令
CLIENT REPLY ON|OFF|SKIP # Instruct the server whether to reply to commands
CLIENT SETNAME connection-name # 设置当前连接的名字
CLIENT UNBLOCK client-id [TIMEOUT|ERROR] # Unblock a client blocked in a blocking command from a different connection
COMMAND # Get array of Redis command details
COMMAND COUNT # Get total number of Redis commands
COMMAND GETKEYS # Extract keys given a full Redis command
COMMAND INFO command-name [command-name ...] # Get array of specific Redis command details
CONFIG GET parameter # 获取配置参数的值
CONFIG REWRITE # 从写内存中的配置文件
CONFIG SET parameter value # 设置配置文件
CONFIG RESETSTAT # 复位再分配使用info命令报告的统计
DBSIZE # 返回当前数据库里面的keys数量
DEBUG OBJECT key # 获取一个key的debug信息
DEBUG SEGFAULT # 使服务器崩溃命令
FLUSHALL # 清空所有数据库命令
FLUSHDB # 清空当前的数据库命令
INFO [section] # 获得服务器的详细信息
LASTSAVE # 获得最后一次同步磁盘的时间
MEMORY DOCTOR # Outputs memory problems report
MEMORY HELP # Show helpful text about the different subcommands
MEMORY-MALLOC-STATS # Show allocator internal stats
MEMORY-PURGE # Ask the allocator to release memory
MEMORY-STATS # Show memory usage details
MEMORY-USAGE key [SAMPLES count] # Estimate the memory usage of a key
MONITOR # 实时监控服务器
REPLICAOF host port # Make the server a replica of another instance, or promote it as master.
ROLE # Return the role of the instance in the context of replication
SAVE # 同步数据到磁盘上
SHUTDOWN [NOSAVE] [SAVE] # 关闭服务
SLAVEOF host port # 指定当前服务器的主服务器
SLOWLOG subcommand [argument] # 管理再分配的慢查询日志
SYNC # 用于复制的内部命令
TIME # 返回当前服务器时间
# Cluster
CLUSTER ADDSLOTS slot [slot ...] # Assign new hash slots to receiving node
CLUSTER COUNT-FAILURE-REPORTS node-id # Return the number of failure reports active for a given node
CLUSTER COUNTKEYSINSLOT slot # Return the number of local keys in the specified hash slot
CLUSTER DELSLOTS slot [slot ...] # Set hash slots as unbound in receiving node
CLUSTER FAILOVER [FORCE|TAKEOVER] # Forces a slave to perform a manual failover of its master.
CLUSTER FORGET node-id # Remove a node from the nodes table
CLUSTER GETKEYSINSLOT slot count # Return local key names in the specified hash slot
CLUSTER INFO # Provides info about Redis Cluster node state
CLUSTER KEYSLOT key # Returns the hash slot of the specified key
CLUSTER MEET ip port # Force a node cluster to handshake with another node
CLUSTER NODES # Get Cluster config for the node
CLUSTER REPLICAS node-id # List replica nodes of the specified master node
CLUSTER REPLICATE node-id # Reconfigure a node as a slave of the specified master node
CLUSTER RESET [HARD|SOFT] # Reset a Redis Cluster node
CLUSTER SAVECONFIG # Forces the node to save cluster state on disk
CLUSTER SET-CONFIG-EPOCH config-epoch # Set the configuration epoch in a new node
CLUSTER SETSLOT slot IMPORTING|MIGRATING|STABLE|NODE [node-id] # Bind an hash slot to a specific node
CLUSTER SLAVES node-id # List slave nodes of the specified master node
CLUSTER SLOTS # Get array of Cluster slot to node mappings
READONLY # Enables read queries for a connection to a cluster slave node
READWRITE # Disables read queries for a connection to a cluster slave node