python:操作數據庫之Redis

Redis的使用和常用數據類型

redis:單線程+異步IO

官網:https://redis.io/

http://redisdoc.com/

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包

利用迭代器優化上述代碼:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章