真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

王高利:Redis入門

redis安裝請點(diǎn)擊這里:Redis安裝

創(chuàng)新互聯(lián)從2013年成立,先為朗縣等服務(wù)建站,朗縣等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為朗縣企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。

redis數(shù)據(jù)結(jié)構(gòu)

1、string

         string是簡單的類型,可以理解成與Memcached一樣的類型,一個(gè)key對應(yīng)一個(gè)value;支持的操作也與Memcached的操作類似,不過它的功能更豐富。可以存二進(jìn)制的對象。

操作之前先做個(gè)別名,因?yàn)檫M(jìn)入redis的命令很長,每次輸入都很麻煩。

[root@gz1 etc]# alias redis-cli='/usr/local/redis/bin/redis-cli'
[root@gz1 etc]# vim .bashrc                                   //寫入后開機(jī)自動(dòng)會(huì)加載
alias redis-cli='/usr/local/redis/bin/redis-cli'
[root@gz1 etc]# redis-cli       //若設(shè)置了密碼,則登入的命令為:redis-cli -a 123456
127.0.0.1:6379>
 
示例1:
127.0.0.1:6379> set key1 hello
OK
127.0.0.1:6379>  get key1
"hello"
127.0.0.1:6379>  mset key1 helloworld key2 howareyou key3 youarewelcome
OK
127.0.0.1:6379> mget key1 key2 key3
1) "helloworld"
2) "howareyou"
3) "youarewelcome"            Ctrl+d 退出

2、list

        list 是一個(gè)鏈表結(jié)構(gòu)(相當(dāng)于一個(gè)管道,隨時(shí)可以從左右插入和取出值,區(qū)別于只能先進(jìn)后出的站),主要功能是 push、pop、獲取一個(gè)范圍的所有值等等。操作中 key 理解為鏈表的名字。使用 List 結(jié)構(gòu),我們可以輕松地實(shí)現(xiàn)最新消息排行等功能(比如微博的 TimeLine)。list 的另一個(gè)應(yīng)用就是消息隊(duì)列,可以利用 list 的 push 操作,將任務(wù)存在 list 中,然后工作線程再用 pop 操作將任務(wù)取出進(jìn)行執(zhí)行。

127.0.0.1:6379>  lpush list1 123   //從左邊插入數(shù)值
(integer) 1
127.0.0.1:6379>  lpush list1 aaa
(integer) 2
127.0.0.1:6379>  lpush list1 bbb
(integer) 3
127.0.0.1:6379> lpush list1 "ccc ddd"
(integer) 4
127.0.0.1:6379>  lrange list1 0 -1    //從左邊開始獲取所有值,沒有從右邊的命令
1) "ccc ddd"
2) "bbb"
3) "aaa"
4) "123"
 
127.0.0.1:6379> lpop list1     //從左邊取出一個(gè)值
"ccc ddd"
127.0.0.1:6379> lrange list1 0 -1
1) "bbb"
2) "aaa"
 
127.0.0.1:6379>  rpush list1 fff     //從右邊插入數(shù)值
(integer) 3
127.0.0.1:6379>  lrange list1 0 -1
1) "bbb"
2) "aaa"
3) "fff"
 
127.0.0.1:6379>  rpop list1       //從右邊取出一個(gè)值
"123"
127.0.0.1:6379>  lrange list1 0 -1
1) "ccc ddd"
2) "bbb"
3) "aaa"

set
    set 即集合,和我們數(shù)學(xué)中的集合概念相似,對集合的操作有添加、刪除元素,有對多個(gè)集合求交、并、差等操作。操作中的 key 理解為集合的名字。

    比如微博應(yīng)用中,可以將一個(gè)用戶所有的關(guān)注人存儲在一個(gè)集合中,將其所有粉絲存儲在一個(gè)集合。因?yàn)?Redis 非常人性化的為集合提供了求交集、并集、差集等操作,你還可以使用不用的命令選擇將結(jié)果返回給客戶端還是存儲到一個(gè)新的集合中。

    另外QQ也有一個(gè)社交功能叫“好友標(biāo)簽”,大家可以給好友貼標(biāo)簽,比如“高富帥”“白富美”“歐巴”等,這時(shí)就可以使用 Redis 的集合來實(shí)現(xiàn),把每一個(gè)用戶的標(biāo)簽都存儲在一個(gè)集合之中。

示例:

127.0.0.1:6379> sadd set1 aaa     //添加集合set1數(shù)值
(integer) 1
127.0.0.1:6379> sadd set1 bbb
(integer) 1
127.0.0.1:6379>  sadd set1 ccc
(integer) 1
127.0.0.1:6379>  sadd set1 ddd
(integer) 1
127.0.0.1:6379>  smembers set1           //獲取集合中數(shù)值(無序的列出)
1) "aaa"
2) "bbb"
3) "ddd"
4) "ccc"

sorted set

    sorted set 即有序集合,它比 set 多一個(gè)權(quán)重參數(shù) score,使得集合中的元素能夠按 score 進(jìn)行有序排列,比如一個(gè)存儲全班同學(xué)成績的 Sorted Sets,其集合 value 可以是同學(xué)的學(xué)號,而 score 就可以是其考試成績,這樣在數(shù)據(jù)插入集合的時(shí)候,就已經(jīng)進(jìn)行了天然的排序。

示例:

127.0.0.1:6379>  zadd set2 10 aaa   //10為權(quán)重參數(shù) score,下同
(integer) 1
127.0.0.1:6379>  zadd set2 2 bbb
(integer) 1
127.0.0.1:6379>  zadd set2 6 ccc
(integer) 1
127.0.0.1:6379>  zadd set2 13 "ab cd"
(integer) 1
127.0.0.1:6379>  zadd set2 8 "ef-gh"
(integer) 1
127.0.0.1:6379>  zrange set2 0 -1  //正序排列輸出
1) "bbb"
2) "ccc"
3) "ef-gh"
4) "aaa"
5) "ab cd"
 
  
127.0.0.1:6379> zrevrange set2 0 -1    //倒序排列輸出
1) "ab cd"
2) "aaa"
3) "ef-gh"
4) "ccc"
5) "bbb"

hash

    在 Redis 中,我們經(jīng)常將一些結(jié)構(gòu)化的信息打包成 hashmap,在客戶端序列化后存儲為一個(gè)字符串的值(一般是 JSON 格式)??梢园讯鄠€(gè)鍵值對存儲到一個(gè) hash 中去,比如用戶的昵稱、年齡、性別可以存儲到一個(gè) hash 中去。

 示例:

127.0.0.1:6379>  hset hash2 name tpp
(integer) 1
127.0.0.1:6379>  hset hash2 age 25
(integer) 1
127.0.0.1:6379>  hset hash2 sex man
(integer) 1
127.0.0.1:6379>  hgetall hash2   //全部取出
1) "name"
2) "tpp"
3) "age"
4) "25"
5) "sex"
6) "man"
127.0.0.1:6379>  hget hash2 name  //取出單個(gè)
"tpp"

Redis持久化


    Redis 提供了兩種持久化的方式,分別是 RDB(Redis DataBase)和AOF(Append Only File)。

    RDB 簡而言之就是在不同的時(shí)間點(diǎn),將 redis 存儲的數(shù)據(jù)生成快照并存儲到磁盤等介質(zhì)上。

    AOF 則是換了一個(gè)角度來實(shí)現(xiàn)持久化,是將 redis 執(zhí)行過的所有寫指令記錄下來,在下次 redis 重新啟動(dòng)時(shí),只要把這些寫指令從前到后再重復(fù)執(zhí)行一遍,就可以實(shí)現(xiàn)數(shù)據(jù)恢復(fù)了。

    其實(shí) RDB 和 AOF 兩種方式可以同時(shí)使用,在這種情況下,如果 redis 重啟的話,則會(huì)優(yōu)先采用 AOF方式來進(jìn)行數(shù)據(jù)恢復(fù),這是因?yàn)?AOF 方式的數(shù)據(jù)恢復(fù)完整度更高。

    如果沒有數(shù)據(jù)持久化的需求,也完全可以關(guān)閉 RDB 和 AOF 方式,這樣的話,redis將會(huì)變成一個(gè)純內(nèi)存數(shù)據(jù)庫,就像 Memcached 一樣。

Redis配置文件解析

配置文件:/usr/local/redis/etc/redis.conf

1、查看及重設(shè)配置

127.0.0.1:6379> config get *
  1) "dbfilename"
  2) "dump.rdb"
  3) "requirepass"
  4) ""
  5) "masterauth"
  6) ""
  7) "unixsocket"
  8) ""
  9) "logfile"
 10) "/usr/local/redis/var/redis.log"
 11) "pidfile"
 12) "/usr/local/redis/var/redis.pid"
 13) "maxmemory"
 14) "0"
 15) "maxmemory-samples"
 16) "3"
 17) "timeout"
 18) "300"
 19) "tcp-keepalive"
 20) "0"
 21) "auto-aof-rewrite-percentage"
 22) "100"
 23) "auto-aof-rewrite-min-size"
 24) "67108864"
 25) "hash-max-ziplist-entries"
 26) "512"
 27) "hash-max-ziplist-value"
 28) "64"
 29) "list-max-ziplist-entries"
 30) "512"
 31) "list-max-ziplist-value"
 32) "64"
 33) "set-max-intset-entries"
 34) "512"
 35) "zset-max-ziplist-entries"
 36) "128"
 37) "zset-max-ziplist-value"
 38) "64"
 39) "hll-sparse-max-bytes"
 40) "3000"
 41) "lua-time-limit"
 42) "5000"
 43) "slowlog-log-slower-than"
 44) "10000"
 45) "latency-monitor-threshold"
 46) "0"
 47) "slowlog-max-len"
 48) "128"
 49) "port"
 50) "6379"
 51) "tcp-backlog"
 52) "511"
 53) "databases"
 54) "16"
 55) "repl-ping-slave-period"
 56) "10"
 57) "repl-timeout"
 58) "60"
 59) "repl-backlog-size"
 60) "1048576"
 61) "repl-backlog-ttl"
 62) "3600"
 63) "maxclients"
 64) "4064"
 65) "watchdog-period"
 66) "0"
 67) "slave-priority"
 68) "100"
 69) "min-slaves-to-write"
 70) "0"
 71) "min-slaves-max-lag"
 72) "10"
 73) "hz"
 74) "10"
 75) "repl-diskless-sync-delay"
 76) "5"
 77) "no-appendfsync-on-rewrite"
 78) "no"
 79) "slave-serve-stale-data"
 80) "yes"
 81) "slave-read-only"
 82) "yes"
 83) "stop-writes-on-bgsave-error"
 84) "yes"
 85) "daemonize"
 86) "yes"
 87) "rdbcompression"
 88) "yes"
 89) "rdbchecksum"
 90) "yes"
 91) "activerehashing"
 92) "yes"
 93) "repl-disable-tcp-nodelay"
 94) "no"
 95) "repl-diskless-sync"
 96) "no"
 97) "aof-rewrite-incremental-fsync"
 98) "yes"
 99) "aof-load-truncated"
100) "yes"
101) "appendonly"
102) "no"
103) "dir"
104) "/usr/local/redis/var"
105) "maxmemory-policy"
106) "volatile-lru"
107) "appendfsync"
108) "always"
109) "save"
110) "900 1 300 10 60 10000"
111) "loglevel"
112) "debug"
113) "client-output-buffer-limit"
114) "normal 0 0 0 slave 268435456 67108864 60 pubsub 33554432 8388608 60"
115) "unixsocketperm"
116) "0"
117) "slaveof"
118) ""
119) "notify-keyspace-events"
120) ""
121) "bind"
122) ""

2、Redis通用配置

1)daemonize no                         //默認(rèn)情況下redis并不是以daemon形式來運(yùn)行的,通過daemonize配置項(xiàng)可以控制redis的運(yùn)行方式。

2)pidfile /path/to/redis.pid         //當(dāng)以daemon形式運(yùn)行時(shí),redis會(huì)默認(rèn)生成一個(gè)pid文件/var/run/redis.pid

3)bind 192.168.1.2 10.8.4.2         //指定綁定的ip,可以有多個(gè)

4)port 6379                                 //指定監(jiān)聽端口

5)unixsocket /tmp/redis.sock     //也可以監(jiān)聽socket

6)unixsocketperm 755                //當(dāng)監(jiān)聽socket時(shí)可以指定權(quán)限為755

7)timeout 0                                 //當(dāng)一個(gè)redis-client一直沒有請求發(fā)出server端,那么server端有權(quán)主動(dòng)關(guān)閉這個(gè)連接,可以通過timeout來設(shè)置“空閑超時(shí)時(shí)限”,0表示永不關(guān)閉。

8)tcp-keepalive 0                        //tcp連接?;畈呗?,可以通過tcp-keepalive配置項(xiàng)來進(jìn)行設(shè)置,單位為秒,假如設(shè)置為60秒,則server端會(huì)每60秒向連接空閑的客戶端發(fā)起一次ACK請求,以檢查客戶端是否已經(jīng)掛掉,對于無響應(yīng)的客戶端則會(huì)關(guān)閉其連接。如果設(shè)置為0,則不會(huì)進(jìn)行保活檢測。

9)loglevel notice                         //日志級別,有debug、verbose、notice、warning四種。

10)logfile  ""                               //定義日志路徑

11)syslog-ident redis                  //如果希望日志打印到syslog中,通過syslog-enabled來控制。另外,syslog-ident還可以讓你指定syslog里的日志標(biāo)志。

12)syslog-facility local0              //指定syslog的設(shè)備,可以是USER或者local0-local7

13)databases 16                         //設(shè)置數(shù)據(jù)庫的總數(shù)量,select n選擇數(shù)據(jù)庫,0-15


3、Redis快照配置(RDB持久化)

1)save 900 1                                        //表示每15分鐘且至少有1個(gè)key改變,就觸發(fā)一次持久化

2)save 300 10                                      //表示每5分鐘且至少有10個(gè)key改變,就觸發(fā)一次持久化

3)save 60 10000                                  //表示每60秒且至少有10000個(gè)key改變,就觸發(fā)一次持久化

4)save ""                                              //這樣可以禁用RDB持久化

5)stop-writes-on-bgsave-error yes     //RDB持久化寫入磁盤避免不了會(huì)出現(xiàn)失敗的情況,默認(rèn)一旦出現(xiàn)失敗,redis會(huì)馬上停止寫操作。如果你覺得無所謂,那就可以使用該選項(xiàng)關(guān)閉這個(gè)功能。

6)rdbcompression yes                         //是否要壓縮

7)rdbchecksum yes                             //是否進(jìn)行數(shù)據(jù)校驗(yàn)

8)dbfilename dump.rdb                      //定義快照文件的名字

9)dir ./                                                 //定義快照文件存儲路徑


4、Redis安全相關(guān)配置

1)requirepass 123456                      //設(shè)置redis-server的密碼,登入命令為:redis-cli -a 123456

2)rename-command config tpplinux.config      //將config命令更名為tpplinux.config,這樣可以避免誤操作,但如果使用了AOF持久化,建議不要啟用該功能。

3)rename-command config ""                          //定義為空,表示禁掉了config命令。


5、Redis限制相關(guān)配置

1)maxclients 10000                            //限制最大客戶端連接數(shù)

2)maxmemory                     //設(shè)定最大內(nèi)存使用數(shù),單位是byte

3)maxmemory-policy volatile-lru      //指定內(nèi)存移除規(guī)則

4)maxmemory-samples 3                  //LRU算法和最小TTL算法都并非是精確的算法,而是估算值。所以你可以設(shè)置樣本的大小。假如redis默認(rèn)會(huì)檢查三個(gè)key,并選擇其中LRU的那個(gè),那么你可以改變這個(gè)key樣本的數(shù)量。


6、Redis AOF持久化相關(guān)配置

1)appendonly yes                                  //開啟持久化

2)appendfilename "appendonly.aof"    //指定aof文件(二進(jìn)制日志形式)名字,保存在dir參數(shù)指定的目錄

3)appendfsync everysec                        //指定fsync()調(diào)用模式,有三種:no(不調(diào)用fsync)、always(每次寫都會(huì)調(diào)用fsync)、ecverysec(每秒鐘調(diào)用一次fsync)。第一種最快;第二種數(shù)據(jù)最安全,但性能會(huì)差一些;第三種為這種方案,默認(rèn)為第三種。

4)no-appendfsync-on-reweite no        //使用no可避免當(dāng)寫入量非常大時(shí)的磁盤io阻塞。

5)auto-aof-rewrite-percentage 10       //規(guī)定什么情況下會(huì)觸發(fā)aof重寫。該值為一個(gè)比例,10表示當(dāng)aof文件增幅達(dá)到10%時(shí)則會(huì)觸發(fā)重寫機(jī)制。

6)auto-aof-rewrite-min-size 64mb      //重寫會(huì)有一個(gè)條件,就是不能低于64MB


7、Redis 慢日志相關(guān)配置

    針對慢日志,可以設(shè)置兩個(gè)參數(shù),一個(gè)是執(zhí)行時(shí)長,單位是微秒;另一個(gè)是慢日志的長度。當(dāng)一個(gè)新的命令被寫入日志時(shí),最老的一條會(huì)從命令日志隊(duì)列中被移除。

1)slowlog-log-slower-than 10000      //慢于10000微秒,則記錄日志

2)slowlog-max-len 128                       //日志長度


分享題目:王高利:Redis入門
文章位置:http://weahome.cn/article/psodoj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部