新聞中心
Redis是一個(gè)key-value 存儲系統(tǒng),是跨平臺的非關(guān)系型數(shù)據(jù)庫。

創(chuàng)新互聯(lián)專注于福建企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,購物商城網(wǎng)站建設(shè)。福建網(wǎng)站建設(shè)公司,為福建等地區(qū)提供建站服務(wù)。全流程按需網(wǎng)站建設(shè),專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)
Redis 是一個(gè)開源的使用 ANSI C 語言編寫、遵守 BSD 協(xié)議、支持網(wǎng)絡(luò)、可基于內(nèi)存、分布式、可選持久性的鍵值對(Key-Value)存儲數(shù)據(jù)庫,并提供多種語言的 API。
Redis 通常被稱為數(shù)據(jù)結(jié)構(gòu)服務(wù)器,因?yàn)橹?value)可以是字符串(String)、哈希(Hash)、列表(list)、集合(sets)和有序集合(sorted sets)等類型。
redis的安裝介質(zhì)在:https://github.com/tporadowski/redis/releases
下載后運(yùn)行得到一個(gè)運(yùn)行路徑。
修改redis.windows-service.conf文件,一個(gè)是端口,一個(gè)是密碼認(rèn)證
#bind 127.0.0.1 #注釋掉這一句,使redis可以外部訪問
port 6379 #默認(rèn)端口,可以改成別的端口
protected-mode yes #修改為yes,開啟保護(hù)模式,默認(rèn)是yes
#daemonize no #這一句是注釋的,windows版本不支持,默認(rèn)是no
requirepass 123456 #密碼
appendonly yes
進(jìn)行指定目錄下,運(yùn)行redis
# 啟動(dòng)redis失敗 Could not create server TCP listening socket 127.0.0.1:6379: bind: 操作成功
操作辦法:
redis命令,設(shè)置key,value值
上面提到的字符串(String)、哈希(Hash)、列表(list)、集合(sets)和有序集合(sorted sets)等類型,具體操作也不復(fù)雜
C:\Program Files\Redis>redis-cli.exe -h 127.0.0.1 -p 6379
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> set key1 v1
OK
127.0.0.1:6379> get key1
"v1"
127.0.0.1:6379> get key
(nil)
127.0.0.1:6379> set name "wbq"
OK
127.0.0.1:6379> get name
"wbq"
127.0.0.1:6379> set name "whp"
OK
127.0.0.1:6379> get name
"whp"
127.0.0.1:6379> del name
(integer) 1
127.0.0.1:6379> hmset name field1 "wbq" field2 "whp"
OK
127.0.0.1:6379> hget name field1
"wbq"
127.0.0.1:6379> hget name field2
"whp"
127.0.0.1:6379> lpush alist redis
(integer) 1
127.0.0.1:6379> lpush alist db2
(integer) 2
127.0.0.1:6379> lpush alist mysql
(integer) 3
127.0.0.1:6379> lrange alist 0 2
1) "mysql"
2) "db2"
3) "redis"
127.0.0.1:6379> lrange alist 0 1
1) "mysql"
2) "db2"
127.0.0.1:6379> sadd aset set1
(integer) 1
127.0.0.1:6379> sadd aset set2
(error) MISCONF Redis is configured to save RDB snapshots, but it is currently not able to persist on disk. Commands that may modify the data set are disabled, because this instance is configured to report errors during writes if RDB snapshotting fails (stop-writes-on-bgsave-error option). Please check the Redis logs for details about the RDB error.
127.0.0.1:6379> sadd aset set3
(error) MISCONF Redis is configured to save RDB snapshots, but it is currently not able to persist on disk. Commands that may modify the data set are disabled, because this instance is configured to report errors during writes if RDB snapshotting fails (stop-writes-on-bgsave-error option). Please check the Redis logs for details about the RDB error.
127.0.0.1:6379> sadd aset set3 [member ...]
又報(bào)錯(cuò)了,(error) MISCONF Redis is configured to save RDB snapshots, but it is currently not able to persist on disk. Commands that may modify the data set are disabled, because this instance is configured to report errors during writes if RDB snapshotting fails (stop-writes-on-bgsave-error option). Please check the Redis logs for details about the RDB error.
大意就是說無法持久化寫入磁盤,進(jìn)行配置
127.0.0.1:6379> config set stop-writes-on-bgsave-error no
OK
127.0.0.1:6379> sadd aset set2
(integer) 1
127.0.0.1:6379> sadd aset set3
(integer) 1
127.0.0.1:6379> sadd aset set4
(integer) 1
127.0.0.1:6379> sadd aset set2
(integer) 0
127.0.0.1:6379> smembers aset
1) "set4"
2) "set3"
3) "set1"
4) "set2"
127.0.0.1:6379>
查看服務(wù)端錯(cuò)誤日志,大意是說沒有寫入權(quán)限
[34752] 27 Apr 11:50:16.328 # fork operation complete
[34752] 27 Apr 11:50:16.340 # Background saving error
[34752] 27 Apr 11:50:22.046 * 1 changes in 900 seconds. Saving...
[34752] 27 Apr 11:50:22.115 * Background saving started by pid 7944
[7944] 27 Apr 11:50:22.251 # Failed opening the RDB file dump.rdb (in server root dir C:\Program Files\Redis) for saving: 數(shù)據(jù)無效。
[7944] 27 Apr 11:50:22.253 # rdbSave failed in qfork: Permission denied
[34752] 27 Apr 11:50:22.325 # fork operation complete
[34752] 27 Apr 11:50:22.338 # Background saving error
[34752] 27 Apr 11:50:28.046 * 1 changes in 900 seconds. Saving...
[34752] 27 Apr 11:50:28.112 * Background saving started by pid 20004
[20004] 27 Apr 11:50:28.229 # Failed opening the RDB file dump.rdb (in server root dir C:\Program Files\Redis) for saving: 數(shù)據(jù)無效。
[20004] 27 Apr 11:50:28.231 # rdbSave failed in qfork: Permission denied
對文件夾的讀寫權(quán)限進(jìn)行變更后,一切正常
[34752] 27 Apr 11:50:28.326 # fork operation complete
[34752] 27 Apr 11:50:28.343 # Background saving error
[34752] 27 Apr 11:50:34.060 * 1 changes in 900 seconds. Saving...
[34752] 27 Apr 11:50:34.126 * Background saving started by pid 32840
[34752] 27 Apr 11:50:34.339 # fork operation complete
[34752] 27 Apr 11:50:34.383 * Background saving terminated with success
繼續(xù)進(jìn)行各類型鍵值操作。
127.0.0.1:6379> zadd asortedset 0 redis
(integer) 1
127.0.0.1:6379> zadd asortedset 1 db2
(integer) 1
127.0.0.1:6379> zadd asortedset 0 sqlserver
(integer) 1
127.0.0.1:6379> zrangebyscore asortedset 0 5
1) "redis"
2) "sqlserver"
3) "db2"
127.0.0.1:6379>
Redis支持多個(gè)數(shù)據(jù)庫,并且每個(gè)數(shù)據(jù)庫的數(shù)據(jù)是隔離的不能共享,并且基于單機(jī)才有,如果是集群就沒有數(shù)據(jù)庫的概念。
Redis是一個(gè)字典結(jié)構(gòu)的存儲服務(wù)器,而實(shí)際上一個(gè)Redis實(shí)例提供了多個(gè)用來存儲數(shù)據(jù)的字典,客戶端可以指定將數(shù)據(jù)存儲在哪個(gè)字典中。這與我們熟知的在一個(gè)關(guān)系數(shù)據(jù)庫實(shí)例中可以創(chuàng)建多個(gè)數(shù)據(jù)庫類似,所以可以將其中的每個(gè)字典都理解成一個(gè)獨(dú)立的數(shù)據(jù)庫。
每個(gè)數(shù)據(jù)庫對外都是一個(gè)從0開始的遞增數(shù)字命名,Redis默認(rèn)支持16個(gè)數(shù)據(jù)庫(可以通過配置文件支持更多,無上限),可以通過配置databases來修改這一數(shù)字。客戶端與Redis建立連接后會自動(dòng)選擇0號數(shù)據(jù)庫,不過可以隨時(shí)使用SELECT命令更換數(shù)據(jù)庫,如要選擇1號數(shù)據(jù)庫:
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> get key1
(nil)
127.0.0.1:6379[1]> zrangebyscore asortedset 0 5
(empty list or set)
127.0.0.1:6379[1]> select 0
OK
127.0.0.1:6379> zrangebyscore asortedset 0 5
1) "redis"
2) "sqlserver"
3) "db2"
127.0.0.1:6379> select 2
OK
127.0.0.1:6379[2]> zrangebyscore asortedset 0 5
(empty list or set)
127.0.0.1:6379[2]>
其實(shí)我真正的目的是為了實(shí)現(xiàn)一個(gè)最近24小時(shí)數(shù)據(jù)的隊(duì)列,確保數(shù)據(jù)是持續(xù)滾動(dòng)的
構(gòu)建一個(gè)list列表鍵值,通過rpush實(shí)現(xiàn)24條記錄寫入,查看數(shù)據(jù),持續(xù)lpop和rpush可實(shí)現(xiàn)一個(gè)隊(duì)列,現(xiàn)在欠缺的是一個(gè)元數(shù)據(jù)了。
127.0.0.1:6379> del userdaydata:username:user1:data
(integer) 1
127.0.0.1:6379> rpush userdaydata:username:user1:data 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
(integer) 24
127.0.0.1:6379> lrange userdaydata:username:user1:data 0 23
1) "0"
2) "1"
3) "2"
4) "3"
5) "4"
6) "5"
7) "6"
8) "7"
9) "8"
10) "9"
11) "10"
12) "11"
13) "12"
14) "13"
15) "14"
16) "15"
17) "16"
18) "17"
19) "18"
20) "19"
21) "20"
22) "21"
23) "22"
24) "23"
127.0.0.1:6379> lpop userdaydata:username:user1:data
"0"
127.0.0.1:6379> lrange userdaydata:username:user1:data 0 23
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "6"
7) "7"
8) "8"
9) "9"
10) "10"
11) "11"
12) "12"
13) "13"
14) "14"
15) "15"
16) "16"
17) "17"
18) "18"
19) "19"
20) "20"
21) "21"
22) "22"
23) "23"
127.0.0.1:6379> rpush userdaydata:username:user1:data 0
(integer) 24
127.0.0.1:6379> lrange userdaydata:username:user1:data 0 23
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "6"
7) "7"
8) "8"
9) "9"
10) "10"
11) "11"
12) "12"
13) "13"
14) "14"
15) "15"
16) "16"
17) "17"
18) "18"
19) "19"
20) "20"
21) "21"
22) "22"
23) "23"
24) "0"
127.0.0.1:6379> lpop userdaydata:username:user1:data
"1"
127.0.0.1:6379> lrange userdaydata:username:user1:data 0 23
1) "2"
2) "3"
3) "4"
4) "5"
5) "6"
6) "7"
7) "8"
8) "9"
9) "10"
10) "11"
11) "12"
12) "13"
13) "14"
14) "15"
15) "16"
16) "17"
17) "18"
18) "19"
19) "20"
20) "21"
21) "22"
22) "23"
23) "0"
127.0.0.1:6379> rpush userdaydata:username:user1:data 1
(integer) 24
127.0.0.1:6379> lrange userdaydata:username:user1:data 0 23
1) "2"
2) "3"
3) "4"
4) "5"
5) "6"
6) "7"
7) "8"
8) "9"
9) "10"
10) "11"
11) "12"
12) "13"
13) "14"
14) "15"
15) "16"
16) "17"
17) "18"
18) "19"
19) "20"
20) "21"
21) "22"
22) "23"
23) "0"
24) "1"
127.0.0.1:6379>
后文會將如何通過python進(jìn)行redis操作。
參考1:https://blog.csdn.net/qq_45047809/article/details/112529734
參考2:https://www.runoob.com/redis/redis-tutorial.html
分享題目:我們一起了解Redis的愛恨情仇
本文路徑:http://m.fisionsoft.com.cn/article/dpdcesh.html


咨詢
建站咨詢
