Redis - fantasy0107/notes GitHub Wiki
in-memory 的 key-value database,因此常常被用在需要快取(Cache)一些資料的場合
windwows 安裝
redis-command
redis-key-naming-conventions
cheatSheet
資料庫的好夥伴:Redis
CRUD
create
// 新增一筆紀錄 (如果存在會覆蓋)
// command
SET mykey "Hello"
HSET mydata name "nick" - H 就是 Hashmap 的意思,所以你可以存取一個 value 底下的 field (有點像table)
SADD myset "nick" - Set 指的是資料結構學過的那個 Set,裡面不會有重複的內容。
LPUSH, RPUSH, LSET - 你可以選擇從左邊或是右邊 push 值進去 或者 指定 index 推入
redis> LPUSH mylist "a" // 左邊推入 a
redis> LPUSH mylist "b" // 左邊推入 b
redis> RPUSH mylist "c" // 右邊推入 c
1) "b"
2) "a"
3) "c"
redis> LSET mylist 0 "d"
redis> LRANGE mylist 0 -1
1) "d"
2) "a"
3) "c"
// php/laravel
Redis::SET('mykey ', "Hello");
Redis::SET('key', 'value', 'EX', 60); - 設定 20 秒 expire
Redis::HSET('mytable', 'id', 10);
read
// 讀取一筆紀錄
// command
GET mykey
HGET mydata name - 回傳 "nick"
SCARD myset - 取得 set 裡 member 的數量
// php/laravel
Redis::GET('mykey')
Redis::HGET('mytable', 'id')
update
INCR, DECR - 加一或減一
// command
SET mykey "10"
DECR mykey - 9
INCR mykey - 10
// php/laravel
Redis::SET('mykey', 10);
Redis::DECR('mykey');
Redis::INCR('mykey');
delete
// command
redis> DEL key1 key2 key3
(integer) 2
command
redis-cli info // 顯示 redis 伺服器資訊
實際應用的場合
key的命名
使用 : 去區分
"object-type:id:field"
"user:1000:password"
"comment:1234:reply.to" -> 多個字組成時用 .
Redis Doc - Strings
SET key value - 新增 key / 更新
SET key value - 再重新 set 一次有值的 key 就會更新
INCR mykey - 值 +1
DECR mykey - 值 -1
GET key - 讀取 key
Redis Doc - Sets (S = Set 不會有重複的值)
SADD - Add item
SCARD - Get size
https://redis.io/commands#hash)
[Redis Doc - Hashes (H = Hashmap) ] (HSET - Set item
HGET - Get item
Redis Doc - Database
DEL key1 key2 key3 - 刪除
KEYS * - 列出所有 key
EXPIRE - 設定 timeout 時間, 時間一到 key 就消失(單位是秒)
TTL - 還有多久會 timeout
Client/Server
PING - Test connection
QUIT - Close connection
SELECT - 選擇資料庫 (有 16 個資料庫 ( 0-15 ),預設是第 0 個資料庫)
概念
當你在儲存資料的時候,你可以新增一個 Expire time 的參數,當這個時間一到之後, 這個 key 就會自動被清除。舉例來說,短網址的 expire 可
以設定成 7 天,當某個網址 7 天內都沒有被任何使用者訪問的話,就會自動被刪除。
這樣的好處是你可以減少記憶體的使用量,只保持某些「熱資料」會存在 Redis,其他比較冷門、 不常被訪問的數據,就存在 Database,等到被訪問的時候再寫到 Redis 即可。
資料庫是用硬碟儲存,Redis 是存在記憶體,以儲存成本來說,資料庫會便宜許多