1. 程式人生 > >Redis命令介紹

Redis命令介紹

這裡有更詳細的使用總結 所以搬過來了

http://blog.nosqlfan.com/html/3139.html

資料型別

2.1 String型別

Redis能儲存二進位制安全的字串,最大長度為1GB

redis 127.0.0.1:6379> SET name "John Doe"
OK
redis 127.0.0.1:6379> GET name
"John Doe"

String型別還支援批量的讀寫操作

redis 127.0.0.1:6379> MSET age 30 sex "male"
OK
redis 127.0.0.1:6379> MGET age sex
1) "30"
2) "male"

String型別其實也可以用來儲存數字,並支援對數字的加減操作。

redis 127.0.0.1:6379> INCR age
(integer) 31
redis 127.0.0.1:6379> INCRBY age 4
(integer) 35
redis 127.0.0.1:6379> GET age
"35"
redis 127.0.0.1:6379> DECR age
(integer) 34
redis 127.0.0.1:6379> DECRBY age 4
(integer) 30
redis 127.0.0.1:6379> GET age
"30"

String型別還支援對其部分的修改和獲取操作

redis 127.0.0.1:6379> APPEND name " Mr."
(integer) 12
redis 127.0.0.1:6379> GET name
"John Doe Mr."
redis 127.0.0.1:6379> STRLEN name
(integer) 12
redis 127.0.0.1:6379> SUBSTR name 0 3
"John"

2.2 List型別

Redis能夠將資料儲存成一個連結串列,並能對這個連結串列進行豐富的操作

redis 127.0.0.1:6379> LPUSH students "John Doe"
(integer) 1
redis 127.0.0.1:6379> LPUSH students "Captain Kirk"
(integer) 2
redis 127.0.0.1:6379> LPUSH students "Sheldon Cooper"
(integer) 3
redis 127.0.0.1:6379> LLEN students
(integer) 3
redis 127.0.0.1:6379> LRANGE students 0 2
1) "Sheldon Cooper"
2) "Captain Kirk"
3) "John Doe"
redis 127.0.0.1:6379> LPOP students
"Sheldon Cooper"
redis 127.0.0.1:6379> LLEN students
(integer) 2
redis 127.0.0.1:6379> LRANGE students 0 1
1) "Captain Kirk"
2) "John Doe"
redis 127.0.0.1:6379> LREM students 1 "John Doe"
(integer) 1
redis 127.0.0.1:6379> LLEN students
(integer) 1
redis 127.0.0.1:6379> LRANGE students 0 0
1) "Captain Kirk"

Redis也支援很多修改操作

redis 127.0.0.1:6379> LINSERT students BEFORE "Captain Kirk" "Dexter Morgan"
(integer) 3
redis 127.0.0.1:6379> LRANGE students 0 2
1) "Dexter Morgan"
2) "Captain Kirk"
3) "John Doe"
redis 127.0.0.1:6379> LPUSH students "Peter Parker"
(integer) 4
redis 127.0.0.1:6379> LRANGE students 0 3
1) "Peter Parker"
2) "Dexter Morgan"
3) "Captain Kirk"
4) "John Doe"
redis 127.0.0.1:6379> LTRIM students 1 3
OK
redis 127.0.0.1:6379> LLEN students
(integer) 3
redis 127.0.0.1:6379> LRANGE students 0 2
1) "Dexter Morgan"
2) "Captain Kirk"
3) "John Doe"
redis 127.0.0.1:6379> LREM students 1 "John Doe"
(integer) 1
redis 127.0.0.1:6379> LLEN students
(integer) 1
redis 127.0.0.1:6379> LRANGE students 0 1
1) "Captain Kirk"

2.3 集合(Sets)型別

Redis能夠將一系列不重複的值儲存成一個集合

redis 127.0.0.1:6379> SADD birds crow
(integer) 1
redis 127.0.0.1:6379> SADD birds pigeon
(integer) 1
redis 127.0.0.1:6379> SADD birds bat
(integer) 1
redis 127.0.0.1:6379> SADD mammals dog
(integer) 1
redis 127.0.0.1:6379> SADD mammals cat
(integer) 1
redis 127.0.0.1:6379> SADD mammals bat
(integer) 1
redis 127.0.0.1:6379> SMEMBERS birds
1) "bat"
2) "crow"
3) "pigeon"
redis 127.0.0.1:6379> SMEMBERS mammals
1) "bat"
2) "cat"
3) "dog"

Sets結構也支援相應的修改操作

redis 127.0.0.1:6379> SREM mammals cat
(integer) 1
redis 127.0.0.1:6379> SMEMBERS mammals
1) "bat"
2) "dog"
redis 127.0.0.1:6379> SADD mammals human
(integer) 1
redis 127.0.0.1:6379> SMEMBERS mammals
1) "bat"
2) "human"
3) "dog"

Redis還支援對集合的子交併補等操作

redis 127.0.0.1:6379> SINTER birds mammals
1) "bat"
redis 127.0.0.1:6379> SUNION birds mammals
1) "crow"
2) "bat"
3) "human"
4) "pigeon"
5) "dog"
redis 127.0.0.1:6379> SDIFF birds mammals
1) "crow"
2) "pigeon"

2.4 有序集合(Sorted Sets)型別

Sorted Sets和Sets結構相似,不同的是存在Sorted Sets中的資料會有一個score屬性,並會在寫入時就按這個score排好序。

redis 127.0.0.1:6379> ZADD days 0 mon
(integer) 1
redis 127.0.0.1:6379> ZADD days 1 tue
(integer) 1
redis 127.0.0.1:6379> ZADD days 2 wed
(integer) 1
redis 127.0.0.1:6379> ZADD days 3 thu
(integer) 1
redis 127.0.0.1:6379> ZADD days 4 fri
(integer) 1
redis 127.0.0.1:6379> ZADD days 5 sat
(integer) 1
redis 127.0.0.1:6379> ZADD days 6 sun
(integer) 1
redis 127.0.0.1:6379> ZCARD days
(integer) 7
redis 127.0.0.1:6379> ZRANGE days 0 6
1) "mon"
2) "tue"
3) "wed"
4) "thu"
5) "fri"
6) "sat"
7) "sun"
redis 127.0.0.1:6379> ZSCORE days sat
"5"
redis 127.0.0.1:6379> ZCOUNT days 3 6
(integer) 4
redis 127.0.0.1:6379> ZRANGEBYSCORE days 3 6
1) "thu"
2) "fri"
3) "sat"
4) "sun"

2.5 Hash型別

Redis能夠儲存key對多個屬性的資料(比如user1.uname user1.passwd)

redis 127.0.0.1:6379> HKEYS student
1) "name"
2) "age"
3) "sex"
redis 127.0.0.1:6379> HVALS student
1) "Ganesh"
2) "30"
3) "Male"
redis 127.0.0.1:6379> HGETALL student
1) "name"
2) "Ganesh"
3) "age"
4) "30"
5) "sex"
6) "Male"
redis 127.0.0.1:6379> HDEL student sex
(integer) 1
redis 127.0.0.1:6379> HGETALL student
1) "name"
2) "Ganesh"
3) "age"
4) "30"

Hash資料結構能夠批量修改和獲取

redis 127.0.0.1:6379> HMSET kid name Akshi age 2 sex Female
OK
redis 127.0.0.1:6379> HMGET kid name age sex
1) "Akshi"
2) "2"
3) "Female"

3.Publish/Subscribe

Redis支援這樣一種特性,你可以將資料推到某個資訊管道中,然後其它人可以通過訂閱這些管道來獲取推送過來的資訊。

3.1 訂閱資訊管道

用一個客戶端訂閱管道

redis 127.0.0.1:6379> SUBSCRIBE channelone
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "channelone"
3) (integer) 1

另一個客戶端往這個管道推送資訊

redis 127.0.0.1:6379> PUBLISH channelone hello
(integer) 1
redis 127.0.0.1:6379> PUBLISH channelone world
(integer) 1

然後第一個客戶端就能獲取到推送的資訊

redis 127.0.0.1:6379> SUBSCRIBE channelone
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "channelone"
3) (integer) 1
1) "message"
2) "channelone"
3) "hello"
1) "message"
2) "channelone"
3) "world"

3.2 按一定模式批量訂閱

用下面的命令訂閱所有channel開頭的資訊通道

redis 127.0.0.1:6379> PSUBSCRIBE channel*
Reading messages... (press Ctrl-C to quit)
1) "psubscribe"
2) "channel*"
3) (integer) 1

在另一個客戶端對兩個推送資訊

redis 127.0.0.1:6379> PUBLISH channelone hello
(integer) 1
redis 127.0.0.1:6379> PUBLISH channeltwo world
(integer) 1

然後在第一個客戶端就能收到推送的資訊

redis 127.0.0.1:6379> PSUBSCRIBE channel*
Reading messages... (press Ctrl-C to quit)
1) "psubscribe"
2) "channel*"
3) (integer) 1
1) "pmessage"
2) "channel*"
3) "channelone"
4) "hello"
1) "pmessage"
2) "channel*"
3) "channeltwo"
4) "world"

4.資料過期設定

Redis支援按key設定過期時間,過期後值將被刪除(在客戶端看來是補刪除了的)

用TTL命令可以獲取某個key值的過期時間(-1表示永不過期)

redis 127.0.0.1:6379> SET name "John Doe"
OK
redis 127.0.0.1:6379> TTL name
(integer) -1

下面命令先用EXISTS命令檢視key值是否存在,然後設定了5秒的過期時間

redis 127.0.0.1:6379> SET name "John Doe"
OK
redis 127.0.0.1:6379> EXISTS name
(integer) 1
redis 127.0.0.1:6379> EXPIRE name 5
(integer) 1

5秒後再檢視

redis 127.0.0.1:6379> EXISTS name
(integer) 0
redis 127.0.0.1:6379> GET name
(nil)

這個值已經沒有了。

上在是直接設定多少秒後過期,你也可以設定在某個時間點過期,下面例子是設定2011-09-24 00:40:00過期。

redis 127.0.0.1:6379> SET name "John Doe"
OK
redis 127.0.0.1:6379> EXPIREAT name 1316805000
(integer) 1
redis 127.0.0.1:6379> EXISTS name
(integer) 0

5.事務性

Redis本身支援一些簡單的組合型的命令,比如以NX結尾命令都是判斷在這個值沒有時才進行某個命令。

redis 127.0.0.1:6379> SET name "John Doe"
OK
redis 127.0.0.1:6379> SETNX name "Dexter Morgan"
(integer) 0
redis 127.0.0.1:6379> GET name
"John Doe"
redis 127.0.0.1:6379> GETSET name "Dexter Morgan"
"John Doe"
redis 127.0.0.1:6379> GET name
"Dexter Morgan"

當然,Redis還支援自定義的命令組合,通過MULTI和EXEC,將幾個命令組合起來執行

redis 127.0.0.1:6379> SET counter 0
OK
redis 127.0.0.1:6379> MULTI
OK
redis 127.0.0.1:6379> INCR counter
QUEUED
redis 127.0.0.1:6379> INCR counter
QUEUED
redis 127.0.0.1:6379> INCR counter
QUEUED
redis 127.0.0.1:6379> EXEC
1) (integer) 1
2) (integer) 2
3) (integer) 3
redis 127.0.0.1:6379> GET counter
"3"

你還可以用DICARD命令來中斷執行中的命令序列

redis 127.0.0.1:6379> SET newcounter 0
OK
redis 127.0.0.1:6379> MULTI
OK
redis 127.0.0.1:6379> INCR newcounter
QUEUED
redis 127.0.0.1:6379> INCR newcounter
QUEUED
redis 127.0.0.1:6379> INCR newcounter
QUEUED
redis 127.0.0.1:6379> DISCARD
OK
redis 127.0.0.1:6379> GET newcounter
"0"

6.持久化

Redis的所有資料都儲存在記憶體中,但是他也提供對這些資料的持久化。

6.1 資料快照

資料快照的原理是將整個Redis中存的所有資料遍歷一遍存到一個副檔名為rdb的資料檔案中。通過SAVE命令可以呼叫這個過程。

redis 127.0.0.1:6379> SET name "John Doe"
OK
redis 127.0.0.1:6379> SAVE
OK
redis 127.0.0.1:6379> SET name "Sheldon Cooper"
OK
redis 127.0.0.1:6379> BGSAVE
Background saving started

如果你是使用的brew在Mac OSX上安全的Redis,那麼rdb檔案會存在如下路徑

/usr/local/var/db/redis/dump.rdb

6.2 Append-Only File(追加式的操作日誌記錄)

Redis還支援一種追加式的操作日誌記錄,叫append only file,其日誌檔案以aof結局,我們一般各為aof檔案。要開啟aof日誌的記錄,你需要在配置檔案中進行如下設定:

appendonly yes

這時候你所有的操作都會記錄在aof日誌檔案中

redis 127.0.0.1:6379> GET name
(nil)
redis 127.0.0.1:6379> SET name "Ganesh Gunasegaran"
OK
redis 127.0.0.1:6379> EXIT

→ cat /usr/local/var/db/redis/appendonly.aof
*2
$6
SELECT
$1
0
*3
$3
SET
$4
name
$18
Ganesh Gunasegaran

7.管理命令

Redis支援多個DB,預設是16個,你可以設定將資料存在哪一個DB中,不同DB間的資料具有隔離性。也可以在多個DB間移動資料。

redis 127.0.0.1:6379> SELECT 0
OK
redis 127.0.0.1:6379> SET name "John Doe"
OK
redis 127.0.0.1:6379> SELECT 1
OK
redis 127.0.0.1:6379[1]> GET name
(nil)
redis 127.0.0.1:6379[1]> SELECT 0
OK
redis 127.0.0.1:6379> MOVE name 1
(integer) 1
redis 127.0.0.1:6379> SELECT 1
OK
redis 127.0.0.1:6379[1]> GET name
"John Doe"

Redis還能進行一些如下操作,獲取一些執行資訊

redis 127.0.0.1:6379[1]> DBSIZE
(integer) 1
redis 127.0.0.1:6379[1]> INFO
redis_version:2.2.13
redis_git_sha1:00000000
redis_git_dirty:0
arch_bits:64
multiplexing_api:kqueue
......

Redis還支援對某個DB資料進行清除(當然清空所有資料的操作也是支援的)

redis 127.0.0.1:6379> SET name "John Doe"
OK
redis 127.0.0.1:6379> DBSIZE
(integer) 1
redis 127.0.0.1:6379> SELECT 1
OK
redis 127.0.0.1:6379[1]> SET name "Sheldon Cooper"
OK
redis 127.0.0.1:6379[1]> DBSIZE
(integer) 1
redis 127.0.0.1:6379[1]> SELECT 0
OK
redis 127.0.0.1:6379> FLUSHDB
OK
redis 127.0.0.1:6379> DBSIZE
(integer) 0
redis 127.0.0.1:6379> SELECT 1
OK
redis 127.0.0.1:6379[1]> DBSIZE
(integer) 1
redis 127.0.0.1:6379[1]> FLUSHALL
OK
redis 127.0.0.1:6379[1]> DBSIZE
(integer) 0

相關推薦

Redis命令介紹

這裡有更詳細的使用總結 所以搬過來了 http://blog.nosqlfan.com/html/3139.html 資料型別 2.1 String型別 Redis能儲存二進位制安全的字串,最大長度為1GB redis 127.0.0.1:6379> S

redis GEO地理位置命令介紹

each limits 排序。 ima 字符 lex member pat uniq GEOADD keylongitude latitude member [longitude latitude member ...] Available since 3.2.0. T

redis命令:info 的簡單介紹

1.背景 如果客戶端連線redis後,執行緩慢,那麼可以通過redis的 INFO commandstats命令來了解下下命令執行的的一些統計資訊; 2.具體 通過redis-cli連線一個redis 節點,然後執行如下命令: INFO com

redis命令及操作記錄以及redis的五種資料型別介紹

相關啟動命令(linux): redis-server啟動命令 sudo /usr/local/bin/redis-server /home/lbxzfr/config/redis/redis.conf  redis_cli客戶端連結命令 redis-cli -h loca

Redis的Zset集合命令介紹及使用

Redis的Zset常用命令總結:1.zadd key value(v1 k1 v2 k2 v3 k3) :向Zset集合中新增資料。 2. zrange :檢視value值。zrange key start end withscores :檢視value值及鍵值。ZRANG

Redis簡單介紹以及數據類型存儲

博客 個數 取值 rom 特點 而且 ring oid wan 因為我們在大型互聯網項目其中。用戶訪問量比較大,比較多。會產生並發問題,對於此。我們該怎樣解決呢。Redis橫空出世,首先,我們來簡單的認識一下Redis。具體介紹例如以下所看到的:

redis命令monitor詳解

monitor 窗口 inf 做了 命令 linux blog linux中 技術分享 通過monitor這個命令可以查看數據庫在當前做了什麽操作,對於管理redis數據庫有這很大的幫助 如圖示,在redis客戶端進行操作顯示info,另一個窗口打

Redis命令學習-?Transaction(事務)

list lib targe 失敗 reference ret con margin bold ?DISCARD ?DISCARD :取消事務,放棄運行事務塊內的全部代碼。假設在使用WATCH命令監視某個key。則取消監視,等同於UNWATCH。 ?

12個Linux進程管理命令介紹

pcs 交互 普通用戶 創建 展示 結束 註意 資源限制 組合 12個Linux進程管理命令介紹 當程序可以執行文件存放在存儲中,並且運行的時候,每個進程會被動態得分配系統資源、內存、安全屬性和與之相關的狀態。可以有多個進程關聯到同一個程序,並同時執行不會互相幹擾。Lin

二、Redis命令行和配置文件redis.windows.conf

存在 默認 localhost 字符串 con all get bsp 多行 一、Redis發送命令的兩種方式 redis-cli -h localhost -p 6379redis-cli ping 返回pong 證明正常 二、命令返回值 1、狀態回復,如ping命令

redis 簡單介紹

list 它的 hash 浮點型 字符 簡單介紹 結合 red 場景 1.redis基本數據結構與短結構壓縮 了解redis的數據結構有助於了解每種數據結構的優劣勢,方便設計合理的cache結構。 1.1.redis提供5種數據結構 1.STRING:可以存儲字符串、浮點

Redis 學習之路 (010) - redis命令手冊

哈希 sts 集中 cluster htm second 不同 index scribe Redis 鍵(key) 命令 命令描述 Redis DEL 命令 該命令用於在 key 存在是刪除 key。 Redis Dump 命令 序列化給定 key ,並返回被

用戶和組管理命令介紹與詳解

linux 命令用戶管理命令:useradd,userdel,usermod,passwd,chsh.chfn,finger,id,chageUseradd(建立用戶)useradd [options] USERNAME 例:useradd -g mygroup user2建立一個

redis命令

redis keys 命令啟動客戶端redis-cli檢測redis服務是否啟動>PING遠程服務器執行命令redis-cli -h host -p port -a passwordRedis 鍵命令用於管理 redis 的鍵。redis 127.0.0.1:6379> COMMAND KEY_N

awk命令介紹和常見使用方法

awkawk、sed、grep這三個命令並稱為文本處理三劍客,但是awk的功能遠遠多出其他兩個命令很多。最初由貝爾實驗室研制。後來GUN組織在awk的基礎上研制了gawk,現在我們在Linux使用的一般都是gawk這個命令,但是為了一些習慣,將awk作為gawk的鏈接,也就是說,現在在bash中使用awk還是

redis實戰筆記(3)-第3章 Redis命令

chan 4.4 ges 打包 常用 重要 讀取 表操作 nio 第3章 Redis命令 本章主要內容 字符串命令、 列表命令和集合命令 散列命令和有序集合命令 發布命令與訂閱命令 其他命令 在每個不同的數據類型的章節裏, 展示的都是該數據類型所獨有的、 最具代表性

PHP-redis命令之 strings (字符串)

edi string cond app expire redis exists ray 檢查 一.string (字符串) 1.set:設置鍵   $reids->set(‘mykey‘,111); 2.get:獲取鍵   $redis->get(‘myk

PHP-redis命令之 列表(lists)

輸出 最後一個元素 索引 error 相對 超出 .cn insert 進行 三、列表(lists) 1.lpush:將所有指定的值插入到存於 key 的列表的頭部。如果 key 不存在,那麽在進行 push 操作前會創建一個空列表。 如果 key 對應的值不是一個 lis

2.Redis 入門介紹

連接不上 解壓 linux下 基於 保持 守護進程 數據結構 tin 基於內存 A)入門概述:   1.是什麽:     Redis:REmote Dlctionary Server(遠程字典服務器)     是完全開源免費的,用C語言編寫的,遵循BSD協議,是一個高性

linux入門基礎知識及簡單命令介紹

linux基礎linux入門基礎知識介紹1、計算機硬件組成介紹計算機主要由cpu(運算器、控制器),內存,I/O,外部存儲等構成。 cpu主要是用來對二進制數據進行運算操作,它從內存中取出數據,然後進行相應的運算操作。不能從硬盤中直接取數據。 內存從外部存儲中取出數據供cpu運存。內存的最小單位是