天天看點

學習Redis筆記

Redis[Remote Directory Server]:遠端伺服器字典

tar xzf redis-3.2.6.tar.gz

cd redis-3.2.6/

Make

Make install

Redis-server:  Redis伺服器

Redis-cli: 指令行用戶端

Redis-benchmark: Redis的性能測試工具

Redis-check-aof: AOF檔案修複工具

Redis-check-dump: RDB檔案檢測工具

Redis.conf: Redis的配置檔案

将配置檔案中daemonize yes 以守護程序的方式來使用

直接啟動

redis-server

redis-server /etc/redis.conf

停止Redis

Shutdown

結束Redis的程序

KEYS *  得到目前資料庫中存在的鍵名

CONFIG GET name

CONFIG SET name value

Port 6379 預設端口

Bind 127.0.0.1, 預設綁定的主機位址

Timeout 0, 當用戶端閑置多久之後關閉連接配接,0代表沒有啟動

Loglevel notice, 日志的級别

Logfile stdout, 日志的記錄方式,預設為标準輸出

Datebase 16,預設資料庫的數量16個,預設的資料庫編号從0開始

Save <second> <change>, 多少秒有多少次改變将其同步到磁盤中的資料檔案裡

Save 900 1

Save 300 10

Save 60 10000

Rdbcompression yes, 存儲本地資料庫時是否啟用壓縮,預設yes

Dbfilename dump.rdb, 指定本地資料庫檔案名,預設dump.rdb

Dir ./, 指定本地資料庫的存放目錄,預設是目前目錄

一個鍵最多存儲512MB

SET 文法: SET key value [EX seconds] [PX milliseconds] [NX|XX]

如果key存在,同名會産生覆寫

GET:根據key找到對應的值 文法:GET key

如果key不是字元串,會報錯

如果key不存在,傳回nil

GETRANGE: 傳回字元串中一部分  文法: GETRANGE start end

GETSET: 設定指定key的值,并且傳回舊的值  文法: GETSET key value

當key不存在傳回nil,如果key不是字元串,會報錯

MSET, 文法:MSET key vakue [key value…]

MGET,文法:MGET key key

STRLEN: 擷取key的字元串長度  文法: STRLEN key   注意:對于不存在key擷取其長度傳回0

SETRANGE:相當于字元串替換的效果  文法: SETRANGE key offset value  注意:如果設定的key原來的字元串長度要比偏移量小,就會以零位元組(\x00)填充

對不存在的key使用SETRANGE,傳回零位元組(\x00)填充

GETRANGE

SETNX: 文法: SETNX key value  隻有key不存在才能設定成功

SETEX: 設定key并key的過期時間  文法: SETEX secondsvalue  注意:SETEX是原子性操作,相當于執行了SET keyvalue,又對ke設定了過期時間EXPIRE key seconds

MSETNX: 一次設定多個key-value對,隻有所有的key都不存在的時候才能設定成功  文法: MSETNX key value [key value…]

PSETEX: 以毫秒為機關設定key的生存周期  文法: PSETEX key milliseconds value             傳回毫秒數PTTL

INCR: 對key中存儲的數字+1    文法:INCR key    注意:key如果不存在,則會先初始化為0,再進行INCR操作, 如果key存儲的不是數字,會報錯

INCRBY: 将key中存儲的數字加上指定增量  文法:INCRBY key increment

INCRBYFLOAT: 給key中存儲的數字加上指定的浮點數

DECR: 将key中存儲的數字減1  文法: DESC KEY

DECRBY: 将key中存儲的數值減去指定的值   DESCBY key increment

APPEND: 通過APPEND将值追加到字元串的末尾      APPEND key value  如果key不存在,則相當于執行了SET操作

在配置檔案中可以通過配置

Hash-max-ziplist-entries 512   512位元組

Hash-max-ziplist-value 64 字段數目

HSET: 将哈希表key中域field設定成指定的value    文法:HSET key field value

HGET: 傳回哈希表key中指定field的值     如果key中field不存在,傳回nil

HSETNX:将hash表中的field設定成指定的值,隻要field不存在的時候才可以成功;如果field存在,操作無效

HSETNX key field value

HMSET: 通過将多個field-value設定到hash表key中   文法:HMSET key field value field value  …

HMSET:一次獲得hash表key中對多個field值   文法:HMSET key field field    注意: 如果hash表key中field不存在,會傳回nil

HGETALL: 傳回hash表key中所有的field和value   文法: HGETALL key

HKEYS:傳回hash中key的所有的field  文法:HKEYS key

HVALS:傳回hash中key中filed所有對應的值   文法:HVALS key

HEXISTS:檢測hash中key的field是否存在  文法:   HEXISTS key field

HLEN:傳回hash表key中field的數量  文法:HLEN key

HINCRBY: 給hash中key的field做增量操作  文法: HINCRBY key field increment

HINCRBYFLOAT: 給hash中key的field做增量浮點操作    文法:HINCRBYFLOAT key field increment

HDEL:删除hash中key的指定field,可以删除一個也可以删除多個  文法: HDEL key field field

LPUSH: 向清單左端添加元素

RPUSH:向清單右端添加元素

LPUSHX:向清單頭部添加元素,隻有key存在才添加

PPUSHX:向清單尾部添加元素,隻有key存在才添加

LPOP

RPOP

LRANGE:擷取清單片段   文法:LRANGE key start stop

注意:如果start下表比清單的最大下标end大,傳回的空清單;如果stop比清單長度大,傳回到清單的末尾

LREM:删除清單中指定的值   文法:LREM key count value

count值有以下幾種:

Count>0,從清單的頭開始,向尾部搜尋,移除與value相等的元素,移除count個;

Count<0:,從清單尾部向頭搜尋,移除與value相等的元素,移除count個

Count=0:移除清單中所有與value相等的值

LINDEX: 獲得指定索引元素的值    LINDEX key index

LSET:設定指定索引元素的值   文法:LSET key index value

LTRIM: 隻保留清單的片段   文法:LTRIM keystart stop

LINSERT:向清單插入元素   文法:LINSERT keyBEFORE|AFTER pivot value

RPOPLPUSH:将元素從一個清單轉到另一個清單

BLPOP:是LPOP的阻塞版本  文法: BLPOP key[key…] timeout

SADD:像集合中添加元素 文法:SADD key member [,…]

SMEMBERS:傳回指定集合中的元素   文法:SMEMBERS key

SISMEMBER:檢測value是否是集合中的成員  文法:SISMEMBER key value

SREM:删除集合中的一個或者多個成員   文法:SREM key member [member…]

SPOP:删除并傳回集合中的随機元素   文法: SPOP key

SRANDMEMBER:随機傳回結合中的元素  SRANDMEMBER key count

count為正數,而且小于集合中的元素個數,傳回的是一個包含随機元素的集合數組;

count大于集合中元素的個數,傳回整個集合;

count為負數,傳回一個數組,數組中的成員可能出現重複,數組的長度是count的絕對值

SDIFF:傳回集合間的差集   文法: SDIFF key key …

SINTER:傳回集合間的交集   文法:SINTER key key …

SUNION:傳回集合間的并集  文法: SUNION key key …

SCRAD:傳回集合中元素的個數  SCRAD key

SDIFFSTORE:将差集結果儲存到指定集合中    SDIFFSTORE destination key key …

SINTERSTORE

SUNIONSTORE

SMOVE:将集合中元素移動另外一個集合中  SMOVE source destination member

ZADD:将元素及其分數添加到集合中    文法: ZADD key score member [score member]

ZADD key +inf maxInt -inf minInx

ZSCORE:獲得指定元素的分數   ZSCORE key member

ZRANGE:按照元素分數從小到大的順序傳回指定索引start到stop之間所有元素(包含兩端)     ZRANGE key start  stop[WITHSCORES]

當兩個元素的分數相同時,Redis在排序時按照字段順序(0<9<A<Z<a<z),如果使用的是UTF-8的編碼方式的中文同樣按照字典順序排列

ZREVRANGE:和ZRANGE相反,按照分數從大到小的順序     ZREVRANGE key start stop [WITHSCORES]

ZRANGEBYSCORE:獲得指定分數範圍内的元素,按照分數從小到大的熟悉怒,傳回的是分數在指定的min到max的元素

ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]

ZRANGEBYSCORE PHPScore 80 90 WITHSCORES     包含80、90

ZRANGEBYSCORE PHPScore (80 (90 WITHSCORES  不包含80、90

ZREVRANGEBYSCORE:獲得指定分數範圍内的元素,按照元素的分數從大到小的順序傳回min和max之間的元素

ZREVRANGEBYSCORE keymax min [WITHSCORES] [LIMIT offset count]

ZINCRBY:操作某個元素的分數,傳回操作之後的分數     ZINCRBY key increment member

ZCARD:獲得集合中元素的數量   ZCARD key

ZCOUNT: 獲得指定分數内的元素數量

ZREM:删除一個或多個元素,傳回删除元素的個數     ZREM key member …

ZREMRANGEBYRANK:按照排名範圍删除元素,按照分數從小到達的順序删除所指定的排名範圍的所有元素

ZREMRANGEBYRANK key start stop

ZREMRANGEBYSCORE:按照分數範圍删除元素     ZREMRNAGEBYSCORE key min max

ZRANK:獲得指定元素的排名,根據分數從小到大的順序     ZRANK key member

ZREVRANK:獲得指定元素的排名,根據分數從大到小的順序     ZRANK key member

ZINTERSTORE:計算有序集合的交集,并将結果儲存起來

ZINTERSTORE destination numkeys key key … [WEIGHTS weight weight…] [AGGEGATE SUM|MIN|MAX]

ZUNIONSTORE:計算有序集合并集,将結果儲存起來

ZINTERSTORE destination numkeys  key key … [WEIGHTS weight weight…] [AGGEGATE SUM|MIN|MAX]

KEYS:傳回所有符合給定模式的key   文法: KEYS pattern

*: 比對任意個字元

?:比對一個任意字元

[]:比對[]之間的一個字元

\x:比對特殊字元

EXISTS:檢測指定key是否存在    文法:EXISTS key

TYPE:傳回key所存儲的類型   文法:TYPE key

EXPIRE:設定key的過期時間  文法:EXPIRE key seconds

EXPIREAT:需要指定在指定時間戳過期   文法:EXPIREAT keytimestamp

PEXPIRE:以毫秒的形式指定過期時間   文法:PEXPIRE key milliseconds

PEXPIREAT:指定時間戳,機關為毫秒  文法:PEXPIREAT key timestamp

TTL:以秒為機關傳回key剩餘時間   如果key沒有設定過期時間,傳回-1;如果key不存在傳回-2

PTTL:以毫秒為機關傳回key剩餘時間

PERSIST:将一個帶有過期時間的key轉變成永久的key  文法: PERSIST key

DEL:删除指定的key

RANDOMKEY:随機的從目前資料庫中傳回一個key

RENAME:重命名一個鍵   RENAME key  newkey

RENAMENX:如果新名稱不存在才會生效

DUMP:序列化給定的key,傳回序列化之後的值

RESTORE:反序列化

MOVE:将目前資料庫中的key移動到另外的資料庫中

MULTI:開啟事務,事務塊中的多條語句會按照順序放入隊列當中,最後由EXEC指令來執行

MULTI

INCR counter1

INCR counter2

INCR counter3

PING

GET counter1

EXEC:執行事務塊中的指令

WATCH:監視一個或者多個key,如果在執行事務之前這個key如果被其他指令改動,事務就被打斷了。

UNWATCH:取消WATCH指令對所有key的監視

DISCARD:

文法錯誤:Redis接到exec後直接傳回錯誤,正确的指令也不會被執行

運作錯誤:正确的指令會被執行

PING:測試和伺服器之間是否連接配接有效

ECHO:列印一個特定資訊

QUIT:請求伺服器關閉與目前用戶端的連接配接,EXIT,CTRL-C

SHUTDOWN:關閉伺服器和用戶端

AUTH:指定Redis的身份驗證,Redis配檔案中requirepass選項的值

CONFIG SET requirepass password

登入進來之後通過AUTH password進行認證

連接配接的時候-a password

SELECT:選擇資料庫   SELECT 0

EXPIRE/EXPIREAT

PEXPIRE/PEXPIREAT

PERSIST

TTL

PTTL

使用SET GETSET也會清除過期時間

SORT key

SORT key DESC

SORT key ALPHA DESC

SORT key [ALPHA] LIMIT 0 5 DESC

SORT uid BY user_level_*

SORT uid GET user_name_*

SORT key [BY pattern] [LIMIT offset count] [GET pattern] [GET pattern] [ASC|DESC|ALPHA] [STORE destination]

包含兩個角色,一個是釋出者,一個是訂閱者;訂閱者可以訂閱一個或者多個頻道channel;釋出者可以向指定頻道釋出資訊

通過PUBLISH釋出消息

PUBLISH channel message

PUBLISH channel1.1 'abelxu'

通過SUBSCRIBE訂閱頻道

SUBSCRIBE channel …

注意:發不出去的消息是不會被持久化的,隻有用戶端訂閱了之後才會接手後面發送的消息

UNSUBSCRIBE:取消某個頻道訂閱,但在Redis用戶端中做了限制,沒有辦法進行驗證     UNSUBSCRIBE [channel]

PSUBSCRIBE:訂閱指定的規則

UNPSUBSCRIBE:取消訂閱

本文轉自 許大樹 51CTO部落格,原文連結:http://blog.51cto.com/abelxu/1892883,如需轉載請自行聯系原作者