近年來,redis得到了廣泛使用,多用做內(nèi)存數(shù)據(jù)庫,緩存重要信息;也可以作為NoSQL數(shù)據(jù)庫,支持string(字符串)、list(鏈表)、set(集合)、zset(sorted set 有序集合)和hash(哈希類型)的存儲。本文內(nèi)容是編寫于2018年11月的內(nèi)部培訓(xùn)講稿一個篇章,演示平臺是windows操作系統(tǒng),Linux下的按照配置約有不同。
網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、成都小程序開發(fā)、集團企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了瑪多免費建站歡迎大家使用!
本文不包括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系統(tǒng)文件:
D:\redis-3.0.504\redis\msvs\x64\Debug
也有編譯好的,下載網(wǎng)址: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。
加入文本內(nèi)容:
啟動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
查看服務(wù)是否運行
5、QUIT
關(guān)閉當前連接
6、SELECT index
切換到指定的數(shù)據(jù)庫
?
二、redis keys命令
1、DEL key
DUMP key
序列化給定的key并返回序列化的值
?
2、EXISTS key
檢查給定的key是否存在
?
3、EXPIRE key seconds
為key設(shè)置過期時間
?
4、EXPIRE key timestamp
用時間戳的方式給key設(shè)置過期時間
?
5、PEXPIRE key milliseconds
設(shè)置key的過期時間以毫秒計
?
6、KEYS pattern
查找所有符合給定模式的key
?
7、MOVE key db
將當前數(shù)據(jù)庫的key移動到數(shù)據(jù)庫db當中
?
8、PERSIST key
移除key的過期時間,key將持久保存
?
9、PTTL key
以毫秒為單位返回key的剩余過期時間
?
10、TTL key
以秒為單位,返回給定key的剩余生存時間
?
11、RANDOMKEY
從當前數(shù)據(jù)庫中隨機返回一個key
?
12、RENAME key newkey
修改key的名稱
?
13、RENAMENX key newkey
僅當newkey不存在時,將key改名為newkey
?
14、TYPE key
返回key所存儲的值的類型
?
三、reids字符串命令
?
1、SET key value
設(shè)置鍵值
2、GET key
得到鍵值
3、GETRANGE key start end
返回key中字符串值的子字符
?
4、GETSET key value
將給定key的值設(shè)為value,并返回key的舊值
?
5、GETBIT KEY OFFSET
對key所儲存的字符串值,獲取指定偏移量上的位
?
6、MGET KEY1 KEY2
獲取一個或者多個給定key的值
?
7、SETBIT KEY OFFSET VALUE
對key所是存儲的字符串值,設(shè)置或清除指定偏移量上的位
?
8、SETEX key seconds value
將值 value關(guān)聯(lián)到 key,并將 key的過期時間設(shè)為 seconds (以秒為單位)。
?
9、SETNX key value
只有在 key不存在時設(shè)置 key的值。
?
10、SETRANGE key offset value
用 value參數(shù)覆寫給定 key所儲存的字符串值,從偏移量 offset開始。
?
11、STRLEN key
返回 key所儲存的字符串值的長度。
?
12、MSET key value [key value ...]
同時設(shè)置一個或多個 key-value對。
?
13、MSETNX key value [key value ...]
同時設(shè)置一個或多個 key-value對,當且僅當所有給定 key都不存在。
?
14、PSETEX key milliseconds value
這個命令和 SETEX命令相似,但它以毫秒為單位設(shè)置 key的生存時間,而不是像 SETEX命令那樣,以秒為單位。
?
15、INCR key
將 key中儲存的數(shù)字值增一。
?
16、INCRBY key increment
將 key所儲存的值加上給定的增量值(increment) 。
?
17、INCRBYFLOAT key increment
將 key所儲存的值加上給定的浮點增量值(increment) 。
?
18、DECR key
將 key中儲存的數(shù)字值減一。
?
19、DECRBY key decrement
key所儲存的值減去給定的減量值(decrement) 。
?
20、APPEND key value
如果 key已經(jīng)存在并且是一個字符串, 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中的指定字段的整數(shù)值加上增量 increment。
/6、HINCRBYFLOAT key field increment
為哈希表 key中的指定字段的浮點數(shù)值加上增量 increment。
/7、HKEYS key
獲取所有哈希表中的字段
/8、HLEN key
獲取哈希表中字段的數(shù)量
/9、HMGET key field1 [field2]
獲取所有給定字段的值
/10、HMSET key field1 value1 [field2 value2 ]
同時將多個 field-value (域-值)對設(shè)置到哈希表 key中。
/11、HSET key field value
將哈希表 key中的字段 field的值設(shè)為 value。
/12、HSETNX key field value
只有在字段 field不存在時,設(shè)置哈希表字段的值。
/13、HVALS key
獲取哈希表中所有值
/14、HSCAN key cursor [MATCH pattern] [COUNT count]
迭代哈希表中的鍵值對。
?
五、Redis 列表命令
/1、BLPOP key1 [key2 ] timeout
移出并獲取列表的第一個元素, 如果列表沒有元素會阻塞列表直到等待超時或發(fā)現(xiàn)可彈出元素為止。
/2、BRPOP key1 [key2 ] timeout
移出并獲取列表的最后一個元素, 如果列表沒有元素會阻塞列表直到等待超時或發(fā)現(xiàn)可彈出元素為止。
/3、BRPOPLPUSH source destination timeout
從列表中彈出一個值,將彈出的元素插入到另外一個列表中并返回它; 如果列表沒有元素會阻塞列表直到等待超時或發(fā)現(xiàn)可彈出元素為止。
/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
獲取列表指定范圍內(nèi)的元素
/11、LREM key count value
移除列表元素
/12、LSET key index value
通過索引設(shè)置列表元素的值
/13、LTRIM key start stop
對一個列表進行修剪(trim),就是說,讓列表只保留指定區(qū)間內(nèi)的元素,不在指定區(qū)間之內(nèi)的元素都將被刪除。
/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
獲取集合的成員數(shù)
/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]
返回集合中一個或多個隨機數(shù)
/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]
向有序集合添加一個或多個成員,或者更新已存在成員的分數(shù)
/2、ZCARD key
獲取有序集合的成員數(shù)
/3、ZCOUNT key min max
計算在有序集合中指定區(qū)間分數(shù)的成員數(shù)
/4、ZINCRBY key increment member
有序集合中對指定成員的分數(shù)加上增量 increment
/5、ZINTERSTORE destination numkeys key [key ...]
計算給定的一個或多個有序集的交集并將結(jié)果集存儲在新的有序集合 key中
/6、ZLEXCOUNT key min max
在有序集合中計算指定字典區(qū)間內(nèi)成員數(shù)量
/7、ZRANGE key start stop [WITHSCORES]
通過索引區(qū)間返回有序集合成指定區(qū)間內(nèi)的成員
/8、ZRANGEBYLEX key min max [LIMIT offset count]
通過字典區(qū)間返回有序集合的成員
/9、ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT]
通過分數(shù)返回有序集合指定區(qū)間內(nèi)的成員
/10、ZRANK key member
返回有序集合中指定成員的索引
/11、ZREM key member [member ...]
移除有序集合中的一個或多個成員
/12、ZREMRANGEBYLEX key min max
移除有序集合中給定的字典區(qū)間的所有成員
/13、ZREMRANGEBYRANK key start stop
移除有序集合中給定的排名區(qū)間的所有成員
/14、ZREMRANGEBYSCORE key min max
移除有序集合中給定的分數(shù)區(qū)間的所有成員
/15、ZREVRANGE key start stop [WITHSCORES]
返回有序集中指定區(qū)間內(nèi)的成員,通過索引,分數(shù)從高到底
/16、ZREVRANGEBYSCORE key max min [WITHSCORES]
返回有序集中指定分數(shù)區(qū)間內(nèi)的成員,分數(shù)從高到低排序
/17、ZREVRANK key member
返回有序集合中指定成員的排名,有序集成員按分數(shù)值遞減(從大到小)排序
/18、ZSCORE key member
返回有序集中,成員的分數(shù)值
/19、ZUNIONSTORE destination numkeys key [key ...]
計算給定的一個或多個有序集的并集,并存儲在新的 key中
/20、ZSCAN key cursor [MATCH pattern] [COUNT count]
迭代有序集合中的元素(包括元素成員和元素分值)
?
八、Redis 發(fā)布訂閱命令
/1、PSUBSCRIBE pattern [pattern ...]
訂閱一個或多個符合給定模式的頻道。
/2、PUBSUB subcommand [argument [argument ...]]
查看訂閱與發(fā)布系統(tǒng)狀態(tài)。
/3、PUBLISH channel message
將信息發(fā)送到指定的頻道。
4、PUNSUBSCRIBE [pattern [pattern ...]]
退訂所有給定模式的頻道。
/5、SUBSCRIBE channel [channel ...]
訂閱給定的一個或多個頻道的信息。
/6、UNSUBSCRIBE [channel [channel ...]]
指退訂給定的頻道。
?
九、Redis 事務(wù)命令
1、DISCARD
取消事務(wù),放棄執(zhí)行事務(wù)塊內(nèi)的所有命令。
2、EXEC
執(zhí)行所有事務(wù)塊內(nèi)的命令。
3、MULTI
標記一個事務(wù)塊的開始。
4、UNWATCH
取消 WATCH命令對所有 key的監(jiān)視。
5、WATCH key [key ...]
監(jiān)視一個(或多個) key,如果在事務(wù)執(zhí)行之前這個(或這些) key被其他命令所改動,那么事務(wù)將被打斷。
?
十、Redis 腳本命令
1、EVAL script numkeys key [key ...] arg [arg ...]
執(zhí)行 Lua腳本。
/2、EVALSHA sha1 numkeys key [key ...] arg [arg ...]
執(zhí)行 Lua腳本。
/3、SCRIPT EXISTS script [script ...]
查看指定的腳本是否已經(jīng)被保存在緩存當中。
4、SCRIPT FLUSH
從腳本緩存中移除所有腳本。
/5、SCRIPT KILL
殺死當前正在運行的 Lua腳本。
/6、SCRIPT LOAD script
將腳本 script添加到腳本緩存中,但并不立即執(zhí)行這個腳本。
?
十一、Redis 服務(wù)器命令
/1、BGREWRITEAOF
異步執(zhí)行一個 AOF(AppendOnly File) 文件重寫操作
/2、BGSAVE
在后臺異步保存當前數(shù)據(jù)庫的數(shù)據(jù)到磁盤
/3、CLIENT KILL [ip:port] [ID client-id]
關(guān)閉客戶端連接
/4、CLIENT LIST
獲取連接到服務(wù)器的客戶端連接列表
/5、CLIENT GETNAME
獲取連接的名稱
/6、CLIENT PAUSE timeout
在指定時間內(nèi)終止運行來自客戶端的命令
/7、CLIENT SETNAME connection-name
設(shè)置當前連接的名稱
/8、CLUSTER SLOTS
獲取集群節(jié)點的映射數(shù)組
/9、COMMAND
獲取 Redis命令詳情數(shù)組
/10、COMMAND COUNT
獲取 Redis命令總數(shù)
/11、COMMAND GETKEYS
獲取給定命令的所有鍵
/12、TIME
返回當前服務(wù)器時間
/13、COMMAND INFO command-name [command-name ...]
獲取指定 Redis命令描述的數(shù)組
/14、CONFIG GET parameter
獲取指定配置參數(shù)的值
/15、CONFIG REWRITE
對啟動 Redis服務(wù)器時所指定的 redis.conf配置文件進行改寫
/16、CONFIG SET parameter value
修改 redis配置參數(shù),無需重啟
/17、CONFIG RESETSTAT
重置 INFO命令中的某些統(tǒng)計數(shù)據(jù)
/18、DBSIZE
返回當前數(shù)據(jù)庫的 key的數(shù)量
/19、DEBUG OBJECT key
獲取 key的調(diào)試信息
/20、DEBUG SEGFAULT
讓 Redis服務(wù)崩潰
/21、FLUSHALL
刪除所有數(shù)據(jù)庫的所有key
/22、FLUSHDB
刪除當前數(shù)據(jù)庫的所有key
/23、INFO [section]
獲取 Redis服務(wù)器的各種信息和統(tǒng)計數(shù)值
/24、LASTSAVE
返回最近一次 Redis成功將數(shù)據(jù)保存到磁盤上的時間,以 UNIX時間戳格式表示
/25、MONITOR
實時打印出 Redis服務(wù)器接收到的命令,調(diào)試用
/26、ROLE
返回主從實例所屬的角色
/27、SAVE
同步保存數(shù)據(jù)到硬盤
/28、SHUTDOWN [NOSAVE] [SAVE]
異步保存數(shù)據(jù)到硬盤,并關(guān)閉服務(wù)器
/29、SLAVEOF host port
將當前服務(wù)器轉(zhuǎn)變?yōu)橹付ǚ?wù)器的從屬服務(wù)器(slave server)
/30、SLOWLOG subcommand [argument]
管理 redis的慢日志
/31、SYNC
用于復(fù)制功能(replication)的內(nèi)部命令
1、Redis和Memcache都是將數(shù)據(jù)存放在內(nèi)存中,都是內(nèi)存數(shù)據(jù)庫。不過memcache還可用于緩存其他東西,例如圖片、視頻等等;
2、Redis不僅僅支持簡單的k/v類型的數(shù)據(jù),同時還提供list,set,hash等數(shù)據(jù)結(jié)構(gòu)的存儲;
3、虛擬內(nèi)存--Redis當物理內(nèi)存用完時,可以將一些很久沒用到的value交換到磁盤;
4、過期策略--memcache在set時就指定,例如set key1 0 0 8,即永不過期。Redis可以通過例如expire 設(shè)定,例如expire name 10;
5、分布式--設(shè)定memcache集群,利用magent做一主多從;redis可以做一主多從,即都可以一主一從;
6、存儲數(shù)據(jù)安全--memcache掛掉后,數(shù)據(jù)沒了;redis可以定期保存到磁盤(持久化);
7、災(zāi)難恢復(fù)--memcache掛掉后,數(shù)據(jù)不可恢復(fù); redis數(shù)據(jù)丟失后可以通過aof恢復(fù);
8、Redis支持數(shù)據(jù)的備份,即master-slave模式的數(shù)據(jù)備份;
9、應(yīng)用場景不一樣:Redis出來作為NOSQL數(shù)據(jù)庫使用外,還能用做消息隊列、數(shù)據(jù)堆棧和數(shù)據(jù)緩存等;Memcached適合于緩存SQL語句、數(shù)據(jù)集、用戶臨時性數(shù)據(jù)、延遲查詢數(shù)據(jù)和session等。
10、Redis使用最佳方式是全部數(shù)據(jù)in-memory。
Redis更多場景是作為Memcached的替代者來使用。
當需要除key/value之外的更多數(shù)據(jù)類型支持時,使用Redis更合適。
當存儲的數(shù)據(jù)不能被剔除時,使用Redis更合適。
文章標題:親自動手搭建微服務(wù)框架和測試環(huán)境-3-Redis
當前鏈接:http://muchs.cn/article28/jpepcp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航、小程序開發(fā)、電子商務(wù)、企業(yè)網(wǎng)站制作、自適應(yīng)網(wǎng)站、微信小程序
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)