redis資料型別命令彙總
阿新 • • 發佈:2018-12-26
- string 字串
命令 | 行為 | 返回值 | 使用示例(略去回撥函式) |
---|---|---|---|
set | 設定儲存在給定鍵中的值 | OK | set(‘key’, ‘value’) |
get | 獲取儲存在給定鍵中的值 | value/null | get(‘key’) |
del | 刪除儲存在給定鍵中的值(任意型別) | 1/0 | del(‘key’) |
incrby | 將鍵儲存的值加上整數increment | incrby(‘key’, increment) | |
decrby | 將鍵儲存的值減去整數increment | decrby(‘key’, increment) | |
incrbyfloat | 將鍵儲存的值加上浮點數increment | incrbyfloat(‘key’, increment) | |
append | 將值value追加到給定鍵當前儲存值的末尾 | append(‘key’, ‘new-value’) | |
getrange | 獲取指定鍵的index範圍內的所有字元組成的子串 | getrange(‘key’, ‘start-index’, ‘end-index’) | |
setrange | 將指定鍵值從指定偏移量開始的子串設為指定值 | setrange(‘key’, ‘offset’, ‘new-string’) |
- list 列表
命令 | 行為 | 返回值 | 使用示例(略去回撥函式) |
---|---|---|---|
rpush | 將給定值推入列表的右端 | 當前列表長度 | rpush(‘key’, ‘value1’ [,‘value2’]) (支援陣列賦值) |
lrange | 獲取列表在給定範圍上的所有值 | array | lrange(‘key’, 0, -1) (返回所有值) |
lindex | 獲取列表在給定位置上的單個元素 | lindex(‘key’, 1) | |
lpop | 從列表左端彈出一個值,並返回被彈出的值 | lpop(‘key’) | |
rpop | 從列表右端彈出一個值,並返回被彈出的值 | rpop(‘key’) | |
ltrim | 將列表按指定的index範圍裁減 | ltrim(‘key’, ‘start’, ‘end’) |
- set 集合
命令 | 行為 | 返回值 | 使用示例(略去回撥函式) |
---|---|---|---|
sadd | 將給定元素新增到集合 | 插入元素數量 | |
smembers | 返回集合中包含的所有元素 | array(無序) | smembers(‘key’) |
sismenber | 檢查給定的元素是否存在於集合中 | 1/0 | |
srem | 如果給定的元素在集合中,則移除此元素 | 1/0 | srem(‘key’, ‘value’) |
scad | 返回集合包含的元素的數量 | sacd(‘key’) | |
spop | 隨機地移除集合中的一個元素,並返回此元素 | spop(‘key’) | |
smove | 集合元素的遷移 | smove(‘source-key’, ‘dest-key’, ‘item’) | |
sdiff | 返回那些存在於第一個集合,但不存在於其他集合的元素(差集) | sdiff(‘key1’, ‘key2’[, ‘key3’, …]) | |
sdiffstore | 將sdiff操作的結果儲存到指定的鍵中 | sdiffstore(‘dest-key’, ‘key1’, ‘key2’ [,‘key3’ ,…]) | |
sinter | 返回那些同事存在於所有集合中的元素(交集) | sinter(‘key1’, ‘key2’[, ‘key3’, …]) | |
sinterstore | 將sinter操作的結果儲存到指定的鍵中 | sinterstore(‘dest-key’, ‘key1’, ‘key2’ [,‘key3’ ,…]) | |
sunion | 返回那些至少存在於一個集合中的元素(並集) | sunion(‘key1’, ‘key2’[, ‘key3’, …]) | |
sunionstore | 將sunion操作的結果儲存到指定的鍵中 | sunionstore(‘dest-key’, ‘key1’, ‘key2’ [,‘key3’ ,…]) |
- hash 雜湊
命令 | 行為 | 返回值 | 使用示例(略去回撥函式) |
---|---|---|---|
hset | 在雜湊裡面關聯起給定的鍵值對 | 1(新增)/0(更新) | hset(‘hash-key’, ‘sub-key’, ‘value’)(不支援陣列、字串) |
hget | 獲取指定雜湊鍵的值 | hget(‘hash-key’, ‘sub-key’) | |
hgetall | 獲取雜湊包含的鍵值對 | json | hgetall(‘hash-key’) |
hdel | 如果給定鍵存在於雜湊裡面,則移除這個鍵 | hdel(‘hash-key’, ‘sub-key’) | |
hmset | 為雜湊裡面的一個或多個鍵設定值 OK | hmset(‘hash-key’, obj) | |
hmget | 從雜湊裡面獲取一個或多個鍵的值 array | hmget(‘hash-key’, array) | |
hlen | 返回雜湊包含的鍵值對數量 | hlen(‘hash-key’) | |
hexists | 檢查給定鍵是否在雜湊中 | 1/0 | hexists(‘hash-key’, ‘sub-key’) |
hkeys | 獲取雜湊包含的所有鍵 | array | hkeys(‘hash-key’) |
hvals | 獲取雜湊包含的所有值 | array | hvals(‘hash-key’) |
hincrby | 將儲存的鍵值以指定增量增加 | 返回增長後的值 | hincrby(‘hash-key’, ‘sub-key’, increment) |
hincrbyfloat | 將儲存的鍵值以指定浮點數增加 |
- zset 有序集合
命令 | 行為 | 返回值 | 使用示例(略去回撥函式) |
---|---|---|---|
zadd | 將一個帶有給定分支的成員新增到有序集合中 | zadd(‘zset-key’, score, ‘key’) (score為int) | |
zrange | 根據元素在有序排列中的位置,從中取出元素 | ||
zrangebyscore | 獲取有序集合在給定分值範圍內的所有元素 | ||
zrem | 如果給定成員存在於有序集合,則移除 | ||
zcard | 獲取一個有序集合中的成員數量 | 有序集的元素個數 | zcard(‘key’) |
-
redis其他常用命令彙總
-
keys命令組
命令 | 行為 | 返回值 | 使用示例(略去回撥函式) |
---|---|---|---|
del | 刪除一個(或多個)keys | 被刪除的keys的數量 | del(‘key1’[, ‘key2’, …]) |
exists | 查詢一個key是否存在 | 1/0 | exists(‘key’) |
expire | 設定一個key的過期的秒數 | 1/0 | expire(‘key’, seconds) |
pexpire | 設定一個key的過期的毫秒數 | 1/0 | pexpire(‘key’, milliseconds) |
expireat | 設定一個UNIX時間戳的過期時間 | 1/0 | expireat(‘key’, timestamp) |
pexpireat | 設定一個UNIX時間戳的過期時間(毫秒) | 1/0 | pexpireat(‘key’, milliseconds-timestamp) |
persist | 移除key的過期時間 | 1/0 | persist(‘key’) |
sort | 對佇列、集合、有序集合排序 | 排序完成的佇列等 | sort(‘key’[, pattern, limit offset count]) |
flushdb | 清空當前資料庫 |
安裝模組redis和hiredis
>> npm i redis
>> 或者
>> npm i hiredis redis (hiredis在Windows上可能比較難安裝)
//本地連線
const redis = require('redis'),
client = redis.createClient();
client.on("error", function (err) {
console.log("Error " + err);
});
client.on("ready", function (err) {
console.log("ready");
});
//redis預設連線不用密碼
//設定密碼:開啟redis.conf檔案,找到requirepass,取消註釋,設定密碼為:123456
//遠端連線
const redis = require('redis'),
RDS_PORT = 6379,
RDS_HOST = '120.77.247.213',
RDS_PWD = '123456',
RDS_OPTS = {auth_pass:RDS_PWD},
client = redis.createClient(RDS_PORT,RDS_HOST,RDS_OPTS);
//client.auth(RDS_PWD,()=>{
//console.log('通過認證')
//})
client.on("error", err => {
console.log("Error " + err);
});
client.on("ready", err => {
console.log("ready");
});
* 常用命令
* multi() 事務
* exec([callback]) 執行事務
* discard 放棄事務
* watch 監視指定的鍵值
* unwatch 取消監視
*
* 命令用法:
* MULTI
* MULTI 命令用於開啟一個事務,它總是返回 OK 。
* MULTI 執行之後, 客戶端可以繼續向伺服器傳送任意多條命令,
* 這些命令不會立即被執行, 而是被放到一個佇列中, 當 EXEC命令被呼叫時, 所有佇列中的命令才會被執行。
* 另一方面, 通過呼叫 DISCARD , 客戶端可以清空事務佇列, 並放棄執行事務。
* EXEC
* EXEC 命令的回覆是一個數組, 陣列中的每個元素都是執行事務中的命令所產生的回覆。
* 其中, 回覆元素的先後順序和命令傳送的先後順序一致。
* DISCARD
* 當執行 DISCARD 命令時, 事務會被放棄, 事務佇列會被清空, 並且客戶端會從事務狀態中退出
* WATCH
* WATCH 命令可以為 Redis 事務提供 check-and-set (CAS)行為。
* 被 WATCH 的鍵會被監視,並會發覺這些鍵是否被改動過了。
* 如果有至少一個被監視的鍵在 EXEC 執行之前被修改了, 那麼整個事務都會被取消,
* EXEC 返回nil-reply來表示事務已經失敗。
*
* WATCH 使得 EXEC 命令需要有條件地執行:
* 事務只能在所有被監視鍵都沒有被修改的前提下執行, 如果這個前提不能滿足的話,事務就不會被執行。
*
* WATCH 命令可以被呼叫多次。 對鍵的監視從 WATCH 執行之後開始生效, 直到呼叫 EXEC 為止。
*
* 當 EXEC 被呼叫時, 不管事務是否成功執行, 對所有鍵的監視都會被取消。
* 另外, 當客戶端斷開連線時, 該客戶端對鍵的監視也會被取消。
* UNWATCH
* 使用無引數的 UNWATCH 命令可以手動取消對所有鍵的監視。
*
* 使用示例:
* 1、連貫操作
* client.multi().incr('key').incr('key').exec(function (err, reply) {});
*
* 2、常規操作
* multi = client.multi();
* multi.incr('key');
* multi.incr('key');
* multi.exec(function (err, replies) {});
*
* 3、取巧操作
* client.multi([
* ["mget", "multifoo", "multibar", redis.print],
* ["incr", "multifoo"],
* ["incr", "multibar"]
* ]).exec(function (err, replies) {
* console.log(replies);
* });