日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

Redis安装及基本配置

發(fā)布時(shí)間:2024/4/17 数据库 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Redis安装及基本配置 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、Redis介紹

1、Redis是一個(gè)key-value存儲(chǔ)系統(tǒng)

2、官方站點(diǎn)http://redis.io

3、Redis和Memcached類似,但支持?jǐn)?shù)據(jù)持久化

4、支持更多value類型,除了string外,還支持hash、lists(鏈表)、sets(集合)、和sorted sets(有序集合)幾種數(shù)據(jù)類型

5、Redis使用兩種文件格式:全量數(shù)據(jù)(RDB)和增量請(qǐng)求(aof)。全量數(shù)據(jù)格式是把內(nèi)存中的數(shù)據(jù)寫入磁盤,便于下次讀取文件進(jìn)行加載。增量請(qǐng)求文件則是把內(nèi)存中的數(shù)據(jù)序列化為操作請(qǐng)求,用于讀取文件進(jìn)行replay得到數(shù)據(jù)

6、Redis的存儲(chǔ)分為內(nèi)存存儲(chǔ)、磁盤存儲(chǔ)和log文件三部分

二、Redis下載安裝配置

# wget 'https://codeload.github.com/antirez/redis/tar.gz/2.8.21' -O redis-2.8.21.tar.gz

# tar zxvf redis-2.8.21.tar.gz

# cd redis-2.8.21

# make

# make PREFIX=/usr/local/redis install

# mkdir? /usr/local/redis/etc

# wget http://www.apelearn.com/study_v2/.redis_conf -O /usr/local/redis/etc/redis.conf 2> /dev/null

# wget http://www.apelearn.com/study_v2/.redis_init -O /etc/init.d/redis 2> /dev/null

# useradd -s /sbin/nologin redis && mkdir /usr/local/redis/var && chmod 777 /usr/local/redis/var && chmod 755 /etc/init.d/redis

# chkconfig --add redis

# chkconfig redis on

vm.overcommit_memory = 1
echo never > /sys/kernel/mm/transparent_hugepage/enabled

# service redis start

三、Redis數(shù)據(jù)結(jié)構(gòu)

1、Redis數(shù)據(jù)類型-string

l?????? string是最簡(jiǎn)單的類型,你可以理解成與Memcached一樣的類型,一個(gè)key對(duì)應(yīng)一個(gè)value,其上支持的操作與Memcached的操作類似,他的功能更豐富。設(shè)置可以存二進(jìn)制的對(duì)象。

l?????? 示例

? ?# redis-cli set mykey "fanjinbao"

?? # redis-cli get mykey "fanjinbao"

?? "fanjinbao"

?? 也可以進(jìn)入redis的終端進(jìn)行創(chuàng)建

?? # redis-cli

? ?127.0.0.1:6379> mset key1 zhangsan key2 lisi key3 hello

?? 127.0.0.1:6379> mget key1 key2 key3

?? 1) "zhangsan"

?? 2) "lisi"

?? 3) "hello"

2、Redis數(shù)據(jù)類型-list

l?????? list是一個(gè)鏈表結(jié)構(gòu),主要功能是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í)行。

l?????? 示例

?? 左側(cè)插入

?? # redis-cli lpush list aaa

?? 左側(cè)取值

?? # redis-cli lpop list

?? 右側(cè)插入

?? # redis-cli rpush list lisi

?? 右側(cè)取值

?? # redis-cli rpop list

?? 查看所有l(wèi)ist值

?? # redis-cli lrange list 0 -1

3、Redis數(shù)據(jù)類型-set

l?????? set是集合,和我們數(shù)學(xué)中的集合概念相似,對(duì)集合的操作有添加刪除元素,有對(duì)多個(gè)集合求交并差等操作。操作中key理解為集合的名字。比如在微博應(yīng)用中,可以將一個(gè)用戶所有的關(guān)注人存在一個(gè)集合中,將其所有粉絲存在一個(gè)集合。因?yàn)镽edis非常人性化的為集合提供了求交集、并集、差集等操作,那么就可以非常方便的實(shí)現(xiàn)如共同關(guān)注、共同喜好、二度好友等功能,對(duì)上面所有集合的操作,你還可以使用不同的命令選擇將結(jié)果返回給客戶端還是存到一個(gè)新的集合中。QQ有一個(gè)社交功能叫“好友標(biāo)簽”,可以個(gè)你的好友貼標(biāo)簽,比如“大美女”、“土豪”,“歐巴”等等,這時(shí)可以使用redis的集合來(lái)實(shí)現(xiàn),把每一個(gè)用戶的標(biāo)簽都存儲(chǔ)在一個(gè)集合之中。

l?????? 示例

?? 往集合中添加元素

?? # redis-cli sadd set1 abc

?? 列出集合中的元素(無(wú)序顯示)

?? # redis-cli smembers set1

4、Redis數(shù)據(jù)類型-sort set

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

l?????? 示例

往集合中添加元素

# redis-cli zadd set2 12 abc

# redis-cli zadd set2 2 "cde 123"

# redis-cli zadd set2 24 123-aaa

# redis-cli zadd set2 4 a123a

列出集合中的元素(按權(quán)重參數(shù)排列升序)

# redis-cli zrange set2 0 -1

1) "cde 123"

2) "a123a"

3) "abc"

4) "123-aaa"

列出集合中的元素(按權(quán)重參數(shù)降序)

# redis-cli zrevrange set2 0 -1

5、Redis數(shù)據(jù)類型-hash

l?????? 在Memcached中,我們經(jīng)常將一些結(jié)構(gòu)化的信息打包成hashmap,在客戶端序列化后存儲(chǔ)為一個(gè)字符串的值(一般是JSON格式),比如用戶名的昵稱、年齡、性別、積分等。

l?????? 示例

?? 往集合中添加元素

?? # redis-cli hset hash name fanjinbao

?? # redis-cli hset hash age 31

?? 取集合中的元素

?? # redis-cli hget hash name

?? # redis-cli hget hash age

?? 列出所有元素

?? # redis-cli hgetall hash

四、Redis持久化

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

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

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

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

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

五、Redis配置

查看Redis配置信息

127.0.0.1:6379> config get *

Redis的基本配置參數(shù):

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

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

bind 192.168.1.201 192.168.1.202 #指定綁定的ip,可以有多個(gè)

port 6379 #默認(rèn)端口

unixsocket /tmp/redis.sock #也可以監(jiān)聽(tīng)socket

unixsocketperm 755 #當(dāng)監(jiān)聽(tīng)soket時(shí)可以指定權(quán)限為755

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

tcp-keepalive 0 #TCP連接?;畈呗?#xff0c;可以通過(guò)tcp-keepalive配置項(xiàng)來(lái)進(jìn)行設(shè)置,單位為秒,加入設(shè)置60秒想連接空閑的客戶端發(fā)起一次ACK請(qǐng)求,以檢查客戶端是否已經(jīng)掛掉,對(duì)于無(wú)響應(yīng)的客戶端則會(huì)關(guān)閉其連接,如果設(shè)置為0,則不會(huì)進(jìn)行保活檢測(cè)。

loglevel notice #日志級(jí)別,有四種debug、verbose、nbotice、warning

logfile “” #定義日志路徑

syslog-ident redis #如果希望日志打印到syslog中,通過(guò)syslog-enable來(lái)控制,另外,syslog-ident還可以讓你指定syslog里的日志標(biāo)志。

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

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

Redis快照配置(rdb持久化)

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

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

save 300 10 #表示每5分鐘且至少10個(gè)key改變,就觸發(fā)

save "" #這樣就可以禁用rdb持久化

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

rdbcompression yes #是否要壓縮

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

dbfilename dump.rdb #定義快照文件的名字

dir ./ #定義快照文件存儲(chǔ)路徑

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

requirepass fansik #設(shè)置redis-server的密碼

如果設(shè)置了密碼,登錄方式:

# redis-cli -a fansik

rename-command CONFIG fansik.config #將CONFIG命令更名為fansik.conf,這樣就可以避免誤操作,但如果使用了AOF持久化,建議不要啟用該功能

rename-command CONFIG "" #也可以后面定義為空,這樣就可以禁掉CONFIG命令

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

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

maxmemory <bytes> #設(shè)定最大內(nèi)存使用數(shù),單位是byte

maxmemmory-policy volatile-lru #指定內(nèi)存移除規(guī)則

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

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

appendonly on #如果是yes,則開(kāi)啟aof持久化

appendfilename "appendonly.aof" #指定aof文件名字,保存在dir參數(shù)指定的目錄

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

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

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

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

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

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

slowlog-log-slower-than 10000 #慢于10000ms則記錄日志

slowlog-max-len 128 #日志長(zhǎng)度(條數(shù))

?

轉(zhuǎn)載于:https://www.cnblogs.com/fansik/p/5483057.html

總結(jié)

以上是生活随笔為你收集整理的Redis安装及基本配置的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。