Redis的使用和常用數據類型
redis:單線程+異步IO
redis默認端口號:6379
yum安裝版本較低
利用源碼安裝
redis-server --requirepass 123456 &>redis.log & #客戶端操作需要口令驗證
Linux安裝Redis步驟和make遇到的坑 解決方案
redis安裝過程中make遇到的問題如下:
解決辦法:
[root@localhost redis-6.0.1]# gcc -v # 查看gcc版本
[root@localhost redis-6.0.1]# yum -y install centos-release-scl # 升級到9.1版本
[root@localhost redis-6.0.1]# yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
[root@localhost redis-6.0.1]# scl enable devtoolset-9 bash
以上爲臨時啓用,如果要長期使用gcc 9.1的話:
[root@localhost redis-6.0.1]# echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile
再次執行:make install PREFIX=/usr/local/redis
安裝成功會出現:Hint: It's a good idea to run 'make test'
執行make test 進行測試,如果出現如下錯誤:
解決方法:
[root@localhost redis-6.0.1]# yum install tcl [root@localhost redis-6.0.1]# make test
linux知識回顧:
查看後臺進程:jobs
把後臺進程拿到前臺:fg %1
遠程連接:
redis-cli -h 10.10.10.130 -p 6379
輸入命令:auth 密碼,之後纔可以使用
redis基於內存
set key value
get key
EX:有效期,通常用於驗證碼
ttl key:查看鍵值還能存在的剩餘時間
命令:redis-benchmark #redis性能基準測試
鍵值對保存:
save
後臺保存:bgsave
查看所有鍵:keys *
TYPE key
返回 key
所儲存的值的類型。
返回值
-
none
(key不存在) -
string
(字符串) -
list
(列表) -
set
(集合) -
zset
(有序集) -
hash
(哈希表) -
stream
(流)
SELECT index
切換到指定的數據庫,數據庫索引號 index
用數字值指定,以 0
作爲起始索引值。
默認使用 0
號數據庫。
返回值
OK
代碼示例
redis> SET db_number 0 # 默認使用 0 號數據庫
OK
redis> SELECT 1 # 使用 1 號數據庫
OK
redis[1]> GET db_number # 已經切換到 1 號數據庫,注意 Redis 現在的命令提示符多了個 [1]
(nil)
redis[1]> SET db_number 1
OK
redis[1]> GET db_number
"1"
redis[1]> SELECT 3 # 再切換到 3 號數據庫
OK
redis[3]> # 提示符從 [1] 改變成了 [3]
FLUSHDB
清空當前數據庫中的所有 key。
此命令從不失敗。
返回值
總是返回 OK
。
代碼示例
redis> DBSIZE # 清空前的 key 數量
(integer) 4
redis> FLUSHDB
OK
redis> DBSIZE # 清空後的 key 數量
(integer) 0
HSET hash field value
可用版本: >= 2.0.0
時間複雜度: O(1)
將哈希表 hash
中域 field
的值設置爲 value
。
如果給定的哈希表並不存在, 那麼一個新的哈希表將被創建並執行 HSET
操作。
如果域 field
已經存在於哈希表中, 那麼它的舊值將被新值 value
覆蓋。
返回值
當 HSET
命令在哈希表中新創建 field
域併成功爲它設置值時, 命令返回 1
; 如果域 field
已經存在於哈希表, 並且 HSET
命令成功使用新值覆蓋了它的舊值, 那麼命令返回 0
。
代碼示例
設置一個新域:
redis> HSET website google "www.g.cn"
(integer) 1
redis> HGET website google
"www.g.cn"
對一個已存在的域進行更新:
redis> HSET website google "www.google.com"
(integer) 0
redis> HGET website google
"www.google.com"
利用python進行哈希校驗:
hashlib包
利用迭代器優化上述代碼: