您好,登錄后才能下訂單哦!
近年來,Redis得到了廣泛使用,多用做內存數據庫,緩存重要信息;也可以作為NoSQL數據庫,支持string(字符串)、list(鏈表)、set(集合)、zset(sorted set 有序集合)和hash(哈希類型)的存儲。本文內容是編寫于2018年11月的內部培訓講稿一個篇章,演示平臺是windows操作系統,Linux下的按照配置約有不同。
本文不包括reidis集群的配置和使用。
以下摘錄:
地址:https://redis.io/download
下載文件:redis-5.0.0.tar.gz,解壓到:D:\redis-5.0.0,然后使用gcc編譯。
如果使用vs2017編譯,需要下載:https://github.com/MicrosoftArchive/redis。
克隆到D:\redis-3.0.504。
使用VS2017打開sln文件:
生成解決方案:
得到debug版的redis系統文件:
D:\redis-3.0.504\redis\msvs\x64\Debug
也有編譯好的,下載網址:https://github.com/ServiceStack/redis-windows
在path中增加D:\redis-3.0.504\redis\msvs\x64\Debug。
進入D:\redis-3.0.504\redis\msvs\x64\Debug新增文件:redis.windows.conf。
加入文本內容:
啟動redis:
啟動redis-cli命令行:
測試:
啟動第一個cmd窗口:
啟動第二個cmd窗口:
回過頭來看第一個cmd窗口:
一、Redis 連接命令
1、redis啟動:
本地啟動:redis-cli
遠程啟動:redis-cli -h host -p port -a password
2、AUTH password
驗證密碼是否正確
3、ECHO message
打印字符串
4、PING
查看服務是否運行
5、QUIT
關閉當前連接
6、SELECT index
切換到指定的數據庫
?
二、redis keys命令
1、DEL key
DUMP key
序列化給定的key并返回序列化的值
?
2、EXISTS key
檢查給定的key是否存在
?
3、EXPIRE key seconds
為key設置過期時間
?
4、EXPIRE key timestamp
用時間戳的方式給key設置過期時間
?
5、PEXPIRE key milliseconds
設置key的過期時間以毫秒計
?
6、KEYS pattern
查找所有符合給定模式的key
?
7、MOVE key db
將當前數據庫的key移動到數據庫db當中
?
8、PERSIST key
移除key的過期時間,key將持久保存
?
9、PTTL key
以毫秒為單位返回key的剩余過期時間
?
10、TTL key
以秒為單位,返回給定key的剩余生存時間
?
11、RANDOMKEY
從當前數據庫中隨機返回一個key
?
12、RENAME key newkey
修改key的名稱
?
13、RENAMENX key newkey
僅當newkey不存在時,將key改名為newkey
?
14、TYPE key
返回key所存儲的值的類型
?
三、reids字符串命令
?
1、SET key value
設置鍵值
2、GET key
得到鍵值
3、GETRANGE key start end
返回key中字符串值的子字符
?
4、GETSET key value
將給定key的值設為value,并返回key的舊值
?
5、GETBIT KEY OFFSET
對key所儲存的字符串值,獲取指定偏移量上的位
?
6、MGET KEY1 KEY2
獲取一個或者多個給定key的值
?
7、SETBIT KEY OFFSET VALUE
對key所是存儲的字符串值,設置或清除指定偏移量上的位
?
8、SETEX key seconds value
將值 value 關聯到 key ,并將 key 的過期時間設為 seconds (以秒為單位)。
?
9、SETNX key value
只有在 key 不存在時設置 key 的值。
?
10、SETRANGE key offset value
用 value 參數覆寫給定 key 所儲存的字符串值,從偏移量 offset 開始。
?
11、STRLEN key
返回 key 所儲存的字符串值的長度。
?
12、MSET key value [key value ...]
同時設置一個或多個 key-value 對。
?
13、MSETNX key value [key value ...]
同時設置一個或多個 key-value 對,當且僅當所有給定 key 都不存在。
?
14、PSETEX key milliseconds value
這個命令和 SETEX 命令相似,但它以毫秒為單位設置 key 的生存時間,而不是像 SETEX 命令那樣,以秒為單位。
?
15、INCR key
將 key 中儲存的數字值增一。
?
16、INCRBY key increment
將 key 所儲存的值加上給定的增量值(increment) 。
?
17、INCRBYFLOAT key increment
將 key 所儲存的值加上給定的浮點增量值(increment) 。
?
18、DECR key
將 key 中儲存的數字值減一。
?
19、DECRBY key decrement
key 所儲存的值減去給定的減量值(decrement) 。
?
20、APPEND key value
如果 key 已經存在并且是一個字符串, APPEND 命令將 指定value 追加到改 key 原來的值(value)的末尾。
?
四、Redis hash 命令
1、HDEL key field1 [field2]
刪除一個或多個哈希表字段
2、HEXISTS key field
查看哈希表 key 中,指定的字段是否存在。
/3、HGET key field
獲取存儲在哈希表中指定字段的值。
/4、HGETALL key
獲取在哈希表中指定 key 的所有字段和值
/5、HINCRBY key field increment
為哈希表 key 中的指定字段的整數值加上增量 increment 。
/6、HINCRBYFLOAT key field increment
為哈希表 key 中的指定字段的浮點數值加上增量 increment 。
/7、HKEYS key
獲取所有哈希表中的字段
/8、HLEN key
獲取哈希表中字段的數量
/9、HMGET key field1 [field2]
獲取所有給定字段的值
/10、HMSET key field1 value1 [field2 value2 ]
同時將多個 field-value (域-值)對設置到哈希表 key 中。
/11、HSET key field value
將哈希表 key 中的字段 field 的值設為 value 。
/12、HSETNX key field value
只有在字段 field 不存在時,設置哈希表字段的值。
/13、HVALS key
獲取哈希表中所有值
/14、HSCAN key cursor [MATCH pattern] [COUNT count]
迭代哈希表中的鍵值對。
?
五、Redis 列表命令
/1、BLPOP key1 [key2 ] timeout
移出并獲取列表的第一個元素, 如果列表沒有元素會阻塞列表直到等待超時或發現可彈出元素為止。
/2、BRPOP key1 [key2 ] timeout
移出并獲取列表的最后一個元素, 如果列表沒有元素會阻塞列表直到等待超時或發現可彈出元素為止。
/3、BRPOPLPUSH source destination timeout
從列表中彈出一個值,將彈出的元素插入到另外一個列表中并返回它; 如果列表沒有元素會阻塞列表直到等待超時或發現可彈出元素為止。
/4、LINDEX key index
通過索引獲取列表中的元素
/5、LINSERT key BEFORE|AFTER pivot value
在列表的元素前或者后插入元素
/6、LLEN key
獲取列表長度
/7、LPOP key
移出并獲取列表的第一個元素
/8、LPUSH key value1 [value2]
將一個或多個值插入到列表頭部
/9、LPUSHX key value
將一個值插入到已存在的列表頭部
/10、LRANGE key start stop
獲取列表指定范圍內的元素
/11、LREM key count value
移除列表元素
/12、LSET key index value
通過索引設置列表元素的值
/13、LTRIM key start stop
對一個列表進行修剪(trim),就是說,讓列表只保留指定區間內的元素,不在指定區間之內的元素都將被刪除。
/14、RPOP key
移除并獲取列表最后一個元素
/15、RPOPLPUSH source destination
移除列表的最后一個元素,并將該元素添加到另一個列表并返回
/16、RPUSH key value1 [value2]
在列表中添加一個或多個值
/17、RPUSHX key value
為已存在的列表添加值
?
六、Redis 集合命令
/1、SADD key member1 [member2]
向集合添加一個或多個成員
/2、SCARD key
獲取集合的成員數
/3、SDIFF key1 [key2]
返回給定所有集合的差集
/4、SDIFFSTORE destination key1 [key2]
返回給定所有集合的差集并存儲在 destination 中
/5、SINTER key1 [key2]
返回給定所有集合的交集
/6、SINTERSTORE destination key1 [key2]
返回給定所有集合的交集并存儲在 destination 中
/7、SISMEMBER key member
判斷 member 元素是否是集合 key 的成員
/8、SMEMBERS key
返回集合中的所有成員
/9、SMOVE source destination member
將 member 元素從 source 集合移動到 destination 集合
/10、SPOP key
移除并返回集合中的一個隨機元素
/11、SRANDMEMBER key [count]
返回集合中一個或多個隨機數
/12、SREM key member1 [member2]
移除集合中一個或多個成員
/13、SUNION key1 [key2]
返回所有給定集合的并集
/14、SUNIONSTORE destination key1 [key2]
所有給定集合的并集存儲在 destination 集合中
/15、SSCAN key cursor [MATCH pattern] [COUNT count]
迭代集合中的元素
?
七、Redis 有序集合命令
/1、ZADD key score1 member1 [score2 member2]
向有序集合添加一個或多個成員,或者更新已存在成員的分數
/2、ZCARD key
獲取有序集合的成員數
/3、ZCOUNT key min max
計算在有序集合中指定區間分數的成員數
/4、ZINCRBY key increment member
有序集合中對指定成員的分數加上增量 increment
/5、ZINTERSTORE destination numkeys key [key ...]
計算給定的一個或多個有序集的交集并將結果集存儲在新的有序集合 key 中
/6、ZLEXCOUNT key min max
在有序集合中計算指定字典區間內成員數量
/7、ZRANGE key start stop [WITHSCORES]
通過索引區間返回有序集合成指定區間內的成員
/8、ZRANGEBYLEX key min max [LIMIT offset count]
通過字典區間返回有序集合的成員
/9、ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT]
通過分數返回有序集合指定區間內的成員
/10、ZRANK key member
返回有序集合中指定成員的索引
/11、ZREM key member [member ...]
移除有序集合中的一個或多個成員
/12、ZREMRANGEBYLEX key min max
移除有序集合中給定的字典區間的所有成員
/13、ZREMRANGEBYRANK key start stop
移除有序集合中給定的排名區間的所有成員
/14、ZREMRANGEBYSCORE key min max
移除有序集合中給定的分數區間的所有成員
/15、ZREVRANGE key start stop [WITHSCORES]
返回有序集中指定區間內的成員,通過索引,分數從高到底
/16、ZREVRANGEBYSCORE key max min [WITHSCORES]
返回有序集中指定分數區間內的成員,分數從高到低排序
/17、ZREVRANK key member
返回有序集合中指定成員的排名,有序集成員按分數值遞減(從大到小)排序
/18、ZSCORE key member
返回有序集中,成員的分數值
/19、ZUNIONSTORE destination numkeys key [key ...]
計算給定的一個或多個有序集的并集,并存儲在新的 key 中
/20、ZSCAN key cursor [MATCH pattern] [COUNT count]
迭代有序集合中的元素(包括元素成員和元素分值)
?
八、Redis 發布訂閱命令
/1、PSUBSCRIBE pattern [pattern ...]
訂閱一個或多個符合給定模式的頻道。
/2、PUBSUB subcommand [argument [argument ...]]
查看訂閱與發布系統狀態。
/3、PUBLISH channel message
將信息發送到指定的頻道。
4、PUNSUBSCRIBE [pattern [pattern ...]]
退訂所有給定模式的頻道。
/5、SUBSCRIBE channel [channel ...]
訂閱給定的一個或多個頻道的信息。
/6、UNSUBSCRIBE [channel [channel ...]]
指退訂給定的頻道。
?
九、Redis 事務命令
1、DISCARD
取消事務,放棄執行事務塊內的所有命令。
2、EXEC
執行所有事務塊內的命令。
3、MULTI
標記一個事務塊的開始。
4、UNWATCH
取消 WATCH 命令對所有 key 的監視。
5、WATCH key [key ...]
監視一個(或多個) key ,如果在事務執行之前這個(或這些) key 被其他命令所改動,那么事務將被打斷。
?
十、Redis 腳本命令
1、EVAL script numkeys key [key ...] arg [arg ...]
執行 Lua 腳本。
/2、EVALSHA sha1 numkeys key [key ...] arg [arg ...]
執行 Lua 腳本。
/3、SCRIPT EXISTS script [script ...]
查看指定的腳本是否已經被保存在緩存當中。
4、SCRIPT FLUSH
從腳本緩存中移除所有腳本。
/5、SCRIPT KILL
殺死當前正在運行的 Lua 腳本。
/6、SCRIPT LOAD script
將腳本 script 添加到腳本緩存中,但并不立即執行這個腳本。
?
十一、Redis 服務器命令
/1、BGREWRITEAOF
異步執行一個 AOF(AppendOnly File) 文件重寫操作
/2、BGSAVE
在后臺異步保存當前數據庫的數據到磁盤
/3、CLIENT KILL [ip:port] [ID client-id]
關閉客戶端連接
/4、CLIENT LIST
獲取連接到服務器的客戶端連接列表
/5、CLIENT GETNAME
獲取連接的名稱
/6、CLIENT PAUSE timeout
在指定時間內終止運行來自客戶端的命令
/7、CLIENT SETNAME connection-name
設置當前連接的名稱
/8、CLUSTER SLOTS
獲取集群節點的映射數組
/9、COMMAND
獲取 Redis 命令詳情數組
/10、COMMAND COUNT
獲取 Redis 命令總數
/11、COMMAND GETKEYS
獲取給定命令的所有鍵
/12、TIME
返回當前服務器時間
/13、COMMAND INFO command-name [command-name ...]
獲取指定 Redis 命令描述的數組
/14、CONFIG GET parameter
獲取指定配置參數的值
/15、CONFIG REWRITE
對啟動 Redis 服務器時所指定的 redis.conf 配置文件進行改寫
/16、CONFIG SET parameter value
修改 redis 配置參數,無需重啟
/17、CONFIG RESETSTAT
重置 INFO 命令中的某些統計數據
/18、DBSIZE
返回當前數據庫的 key 的數量
/19、DEBUG OBJECT key
獲取 key 的調試信息
/20、DEBUG SEGFAULT
讓 Redis 服務崩潰
/21、FLUSHALL
刪除所有數據庫的所有key
/22、FLUSHDB
刪除當前數據庫的所有key
/23、INFO [section]
獲取 Redis 服務器的各種信息和統計數值
/24、LASTSAVE
返回最近一次 Redis 成功將數據保存到磁盤上的時間,以 UNIX 時間戳格式表示
/25、MONITOR
實時打印出 Redis 服務器接收到的命令,調試用
/26、ROLE
返回主從實例所屬的角色
/27、SAVE
同步保存數據到硬盤
/28、SHUTDOWN [NOSAVE] [SAVE]
異步保存數據到硬盤,并關閉服務器
/29、SLAVEOF host port
將當前服務器轉變為指定服務器的從屬服務器(slave server)
/30、SLOWLOG subcommand [argument]
管理 redis 的慢日志
/31、SYNC
用于復制功能(replication)的內部命令
1、Redis和Memcache都是將數據存放在內存中,都是內存數據庫。不過memcache還可用于緩存其他東西,例如圖片、視頻等等;
2、Redis不僅僅支持簡單的k/v類型的數據,同時還提供list,set,hash等數據結構的存儲;
3、虛擬內存--Redis當物理內存用完時,可以將一些很久沒用到的value交換到磁盤;
4、過期策略--memcache在set時就指定,例如set key1 0 0 8,即永不過期。Redis可以通過例如expire 設定,例如expire name 10;
5、分布式--設定memcache集群,利用magent做一主多從;redis可以做一主多從,即都可以一主一從;
6、存儲數據安全--memcache掛掉后,數據沒了;redis可以定期保存到磁盤(持久化);
7、災難恢復--memcache掛掉后,數據不可恢復; redis數據丟失后可以通過aof恢復;
8、Redis支持數據的備份,即master-slave模式的數據備份;
9、應用場景不一樣:Redis出來作為NoSQL數據庫使用外,還能用做消息隊列、數據堆棧和數據緩存等;Memcached適合于緩存SQL語句、數據集、用戶臨時性數據、延遲查詢數據和session等。
10、Redis使用最佳方式是全部數據in-memory。
Redis更多場景是作為Memcached的替代者來使用。
當需要除key/value之外的更多數據類型支持時,使用Redis更合適。
當存儲的數據不能被剔除時,使用Redis更合適。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。