1 Redis的數(shù)據(jù)類型(Data Types)
1.1 字符串(Strings)
字符串是一種最基本的Redis值類型。Redis字符串是二進(jìn)制安全的(存儲為字節(jié)碼丛晦,內(nèi)部不做編碼)。一個字符串類型的值最多能存儲512M字節(jié)的內(nèi)容握侧。
1.2 列表(Lists)
Redis列表是簡單的字符串列表帅韧,按照插入順序排序。 你可以添加一個元素到列表的頭部(左邊LPUSH
)或者尾部(右邊RPUSH
)锅睛。一個列表最多可以包含232-1個元素。特性就是支持常數(shù)時間的 插入和靠近頭尾部元素的刪除历谍。Lists是鏈表實(shí)現(xiàn)的一個雙端隊列现拒。
1.3 集合(Sets)
Redis集合是一個無序的字符串合集。你可以以O(1) 的時間復(fù)雜度完成 添加望侈,刪除以及測試元素是否存在的操作印蔬。Redis集合有著不允許相同成員存在的優(yōu)秀特性。一個集合最多可以包含232-1個元素脱衙。
1.4 有序集合(Sorted sets)
Redis有序集合和Redis集合類似侥猬,但是每個字符串元素都關(guān)聯(lián)到一個叫score浮動數(shù)值(floating number value)。里面的元素總是通過score進(jìn)行著排序捐韩。使用有序集合退唠,你可以非常快地(O(log(N)))完成添加荤胁,刪除和更新元素的操作瞧预。
1.5 哈希(Hashes)
Redis Hashes是字符串字段和字符串值之間的映射,所以它們是完美的表示對象的數(shù)據(jù)類型仅政。一個hash最多可以包含232-1 個key-value鍵值對垢油。
1.6 Bit arrays (或者說 simply bitmaps)
位圖不是實(shí)際的數(shù)據(jù)類型,而是在String類型上定義的一組面向位的操作: 可以設(shè)置和清除單獨(dú)的 bits圆丹,數(shù)出所有設(shè)為 1 的 bits 的數(shù)量滩愁,找到最前的被設(shè)為 1 或 0 的 bit,等等运褪【ィ可以設(shè)置多達(dá)2 ^ 32個不同的位
1.7 HyperLogLogs
HyperLogLog是一種概率數(shù)據(jù)結(jié)構(gòu),用于對唯一事物進(jìn)行計數(shù)秸讹,得出標(biāo)準(zhǔn)誤差小于1%的估計度量檀咙,被編碼為Redis字符串。該算法的神奇之處在于璃诀,消耗的內(nèi)存量最壞情況僅僅只有12k字節(jié)弧可。每次看到一個新元素時,可以使用PFADD
將它添加到計數(shù)中劣欢,使用PFCOUNT
獲取計數(shù)棕诵。
2 常用命令
2.1 Keys
KEYS pattern # 查找所有符合給定模式pattern的 key(類似文件名匹配)
DEL key [key ...] # 刪除指定的key裁良,返回存在的個數(shù)
EXISTS key [key ...] # 查詢key是否存在,返回存在的個數(shù)
TYPE key # 獲取key的存儲類型: string, list, set, zset, hash, none
RENAME key newkey # 將一個key重命名
RENAMENX key newkey # 重命名一個key,新的key必須是不存在的key
RANDOMKEY # 返回一個隨機(jī)的key
EXPIRE key seconds # 設(shè)置一個key的過期的秒數(shù)
EXPIREAT key timestamp # 設(shè)置一個UNIX時間戳的過期時間
PEXPIRE key milliseconds # 設(shè)置key的有效時間以毫秒為單位
PEXPIREAT key milliseconds-timestamp # 設(shè)置key的到期UNIX時間戳以毫秒為單位
TTL key # 獲取key的有效時間(單位:秒)
PTTL key # 獲取key的有效毫秒數(shù)
PERSIST key # 移除key的過期時間
SORT key [BY pattern] [LIMIT offset count] [GET pattern [GET pattern ...]] [ASC|DESC] [ALPHA] [STORE destination] # 對隊列校套、集合价脾、有序集合排序
DUMP key # 導(dǎo)出key的值
MOVE key db # 移動一個key到另一個數(shù)據(jù)庫
MIGRATE host port key destination-db timeout [COPY] [REPLACE] # 原子性的將key從redis的一個實(shí)例移到另一個實(shí)例
OBJECT subcommand [arguments [arguments ...]] # 檢查內(nèi)部的再分配對象
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] # 設(shè)置一個key的value值
MSET key value [key value ...] # 設(shè)置多個key value
SETNX key value # 設(shè)置的一個key的值,只有當(dāng)該key不存在
MSETNX key value [key value ...] # 設(shè)置多個key value,僅當(dāng)key不存在時
SETEX key seconds value # 設(shè)置key-value并設(shè)置過期時間(單位:秒)
PSETEX key milliseconds value # 設(shè)置key-value并設(shè)置過期時間(單位:毫秒)
INCR key # 執(zhí)行原子加1操作
INCRBY key increment # 執(zhí)行原子增加一個整數(shù)
INCRBYFLOAT key increment # 執(zhí)行原子增加一個浮點(diǎn)數(shù)
DECR key # 整數(shù)原子減1
DECRBY key decrement # 原子減指定的整數(shù)
GETSET key value # 設(shè)置一個key的value笛匙,并獲取設(shè)置前的值
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] # 統(tǒng)計字符串指定起始位置的字節(jié)數(shù)
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 # 返回位的值存儲在關(guān)鍵的字符串值的偏移量侨把。
2.3 Lists
LRANGE key start stop # 從列表中獲取指定返回的元素
LLEN key # 獲得隊列(List)的長度
LPUSH key value [value ...] # 從隊列的左邊入隊一個或多個元素
LPUSHX key value # 當(dāng)隊列存在時,從隊到左邊入隊一個元素
RPUSH key value [value ...] # 從隊列的右邊入隊一個元素
RPUSHX key value # 從隊列的右邊入隊一個元素妹孙,僅隊列存在時有效
LPOP key # 從隊列的左邊出隊一個元素
RPOP key # 從隊列的右邊出隊一個元
LSET key index value # 設(shè)置隊列里面一個元素的值
LREM key count value # 從列表中刪除元素
LTRIM key start stop # 修剪到指定范圍內(nèi)的清單
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 # 獲取集合里面的元素數(shù)量
SMEMBERS key # 獲取集合里面的所有元素
SISMEMBER key member # 確定一個給定的值是一個集合的成員
SRANDMEMBER key [count] # 從集合里面隨機(jī)獲取一個元素
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 ...] # 獲得多個集合的差集,并將結(jié)果存入新的set里面
SINTER key [key ...] # 獲得多個集合的交集
SINTERSTORE destination key [key ...] # 獲得多個集合的交集葱跋,并將結(jié)果存入新的set里面
SUNION key [key ...] # 獲得多個集合的并集
SUNIONSTORE destination key [key ...] # 獲得多個集合的并集,并將結(jié)果存入新的set里面
2.5 Sorted Sets
ZCARD key # 獲取一個排序的集合中的成員數(shù)量
ZCOUNT key min max # 返回分?jǐn)?shù)范圍內(nèi)的成員數(shù)量
ZSCORE key member # 獲取成員在排序設(shè)置相關(guān)的比分
ZLEXCOUNT key min max # 返回成員之間的成員數(shù)量
ZSCAN key cursor [MATCH pattern] [COUNT count] # 迭代sorted sets里面的元素
ZRANK key member # 確定在排序集合成員的索引
ZREVRANK key member # 確定指數(shù)在排序集的成員源梭,下令從分?jǐn)?shù)高到低
ZRANGE key start stop [WITHSCORES] # 根據(jù)指定的index返回娱俺,返回sorted set的成員列表
ZREVRANGE key start stop [WITHSCORES] # 在排序的設(shè)置返回的成員范圍,通過索引废麻,下令從分?jǐn)?shù)高到低
ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count] # 返回有序集合中指定分?jǐn)?shù)區(qū)間內(nèi)的成員荠卷,分?jǐn)?shù)由高到低排序。
ZADD key [NX|XX] [CH] [INCR] score member [score member ...] # 添加到有序set的一個或多個成員烛愧,或更新的分?jǐn)?shù)油宜,如果它已經(jīng)存在
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 # 增量的一名成員在排序設(shè)置的評分
ZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX] # 相交多個排序集,導(dǎo)致排序的設(shè)置存儲在一個新的關(guān)鍵
ZRANGEBYLEX key min max [LIMIT offset count] # 返回指定成員區(qū)間內(nèi)的成員怜姿,按字典正序排列, 分?jǐn)?shù)必須相同慎冤。
ZREVRANGEBYLEX key max min [LIMIT offset count] # 返回指定成員區(qū)間內(nèi)的成員,按字典倒序排列, 分?jǐn)?shù)必須相同
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count] # 返回有序集合中指定分?jǐn)?shù)區(qū)間內(nèi)的成員沧卢,分?jǐn)?shù)由低到高排序蚁堤。
ZUNIONSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX] # 添加多個排序集和導(dǎo)致排序的設(shè)置存儲在一個新的關(guān)鍵
ZREM key member [member ...] # 從排序的集合中刪除一個或多個成員
ZREMRANGEBYLEX key min max # 刪除名稱按字典由低到高排序成員之間所有成員。
ZREMRANGEBYRANK key start stop # 在排序設(shè)置的所有成員在給定的索引中刪除
ZREMRANGEBYSCORE key min max # 刪除一個排序的設(shè)置在給定的分?jǐn)?shù)所有成員
2.6 Hashes
HEXISTS key field # 判斷field是否存在于hash中
HGET key field # 獲取hash中field的值
HKEYS key # 獲取hash的所有字段
HLEN key # 獲取hash里所有字段的數(shù)量
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中指定域的值增加給定的數(shù)字
HINCRBYFLOAT key field increment # 將hash中指定域的值增加給定的浮點(diǎn)數(shù)
HSET key field value # 設(shè)置hash里面一個字段的值
HMSET key field value [field value ...] # 設(shè)置hash字段值
HSETNX key field value # 設(shè)置hash的一個字段但狭,只有當(dāng)這個字段不存在時有效
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 ...] # 返回一個標(biāo)準(zhǔn)的地理空間的Geohash字符串
GEOPOS key member [member ...] # 返回地理空間的經(jīng)緯度
GEODIST key member1 member2 [unit] # 返回兩個地理空間之間的距離
GEORADIUS key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] # 查詢指定半徑內(nèi)所有的地理空間元素的集合披诗。
GEORADIUSBYMEMBER key member radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] # 查詢指定半徑內(nèi)匹配到的最大距離的一個地理空間元素撬即。
# 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 # 發(fā)布一條消息到頻道
PUNSUBSCRIBE [pattern [pattern ...]] # 停止發(fā)布到匹配給定模式的渠道的消息聽
SUBSCRIBE channel [channel ...] # 監(jiān)聽頻道發(fā)布的消息
UNSUBSCRIBE [channel [channel ...]] # 停止頻道監(jiān)聽
# Scripting
EVAL script numkeys key [key ...] arg [arg ...] # 在服務(wù)器端執(zhí)行 LUA 腳本
EVALSHA sha1 numkeys key [key ...] arg [arg ...] # 在服務(wù)器端執(zhí)行 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 # 刪除服務(wù)器緩存中所有Lua腳本。
SCRIPT KILL # 殺死當(dāng)前正在運(yùn)行的 Lua 腳本呈队。
SCRIPT LOAD script # 從服務(wù)器緩存中裝載一個Lua腳本
# Transactions
DISCARD # 丟棄所有 MULTI 之后發(fā)的命令
EXEC # 執(zhí)行所有 MULTI 之后發(fā)的命令
MULTI # 標(biāo)記一個事務(wù)塊開始
UNWATCH # 取消事務(wù)命令
WATCH key [key ...] # 鎖定key直到執(zhí)行了 MULTI/EXEC 命令
# Connection
AUTH password # 驗(yàn)證服務(wù)器命令
ECHO message # 回顯輸入的字符串
PING # Ping 服務(wù)器
QUIT # 關(guān)閉連接剥槐,退出
SELECT index # 選擇新數(shù)據(jù)庫
SWAPDB index index # Swaps two Redis databases
# Server
BGREWRITEAOF # 異步重寫追加文件命令
BGSAVE # 異步保存數(shù)據(jù)集到磁盤上
CLIENT KILL [ip:port] [ID client-id] [TYPE normal|slave|pubsub] [ADDR ip:port] [SKIPME yes/no] # 關(guān)閉客戶端連接
CLIENT LIST # 獲得客戶端連接列表
CLIENT GETNAME # 獲得當(dāng)前連接名稱
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 # 設(shè)置當(dāng)前連接的名字
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 # 獲取配置參數(shù)的值
CONFIG REWRITE # 從寫內(nèi)存中的配置文件
CONFIG SET parameter value # 設(shè)置配置文件
CONFIG RESETSTAT # 復(fù)位再分配使用info命令報告的統(tǒng)計
DBSIZE # 返回當(dāng)前數(shù)據(jù)庫里面的keys數(shù)量
DEBUG OBJECT key # 獲取一個key的debug信息
DEBUG SEGFAULT # 使服務(wù)器崩潰命令
FLUSHALL # 清空所有數(shù)據(jù)庫命令
FLUSHDB # 清空當(dāng)前的數(shù)據(jù)庫命令
INFO [section] # 獲得服務(wù)器的詳細(xì)信息
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 # 實(shí)時監(jiān)控服務(wù)器
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 # 同步數(shù)據(jù)到磁盤上
SHUTDOWN [NOSAVE] [SAVE] # 關(guān)閉服務(wù)
SLAVEOF host port # 指定當(dāng)前服務(wù)器的主服務(wù)器
SLOWLOG subcommand [argument] # 管理再分配的慢查詢?nèi)罩?SYNC # 用于復(fù)制的內(nèi)部命令
TIME # 返回當(dāng)前服務(wù)器時間
# 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