Redis使用詳細(xì)教程,redis教程
Jul 06, 2016 pm 02:25 PMRedis使用詳細(xì)教程,redis教程
一、Redis基礎(chǔ)部分:?
1、redis介紹與安裝比mysql快10倍以上?
*****************redis適用場(chǎng)合****************
1.取最新N個(gè)數(shù)據(jù)的操作
2.排行榜應(yīng)用,取TOP?N?操作
3.需要精確設(shè)定過(guò)期時(shí)間的應(yīng)用
4.計(jì)數(shù)器應(yīng)用
5.Uniq操作,獲取某段時(shí)間所有數(shù)據(jù)排重值
6.實(shí)時(shí)系統(tǒng),反垃圾系統(tǒng)7.Pub/Sub構(gòu)建實(shí)時(shí)消息系統(tǒng)
7.Pub/Sub構(gòu)建實(shí)時(shí)消息系統(tǒng)8.構(gòu)建隊(duì)列系統(tǒng)
9.緩存
=============================================
SET操作每秒鐘?110000?次,GET操作每秒鐘?81000?次,服務(wù)器配置如下:
Linux?2.6,?Xeon?X3320?2.5Ghz.
stackoverflow?網(wǎng)站使用?Redis?做為緩存服務(wù)器。
同時(shí)也會(huì)將數(shù)據(jù)寫到硬盤上。所以數(shù)據(jù)是安全的(除突然斷電外,重啟服務(wù)會(huì)寫到dump.rdb文件中)
?
1.安裝:?
tar?zxvf?redis-2.6.9.tar.gz
cd?redis-2.6.9
make
cd?src?&&?make?install
2.移動(dòng)配置文件位置(為了便于管理)
cd?/usr/local/
mkdir?-p?/usr/local/redis/bin
mkdir?-p?/usr/local/redis/etc
mv?/lamp/redis-2.6.9/redis.conf?/usr/local/redis/etc
cd?/lamp/redis-2.6.9/src
mv?mkreleasehdr.sh?redis-benchmark?redis-check-aof?redis-check-dump?redis-cli?redis-server?/usr/local/redis/bin
3.修改配置文件?
vi?/usr/local/redis/etc/redis.conf
?
一、將daemonize?no?中no改為yes[yes指后臺(tái)運(yùn)行]
4.啟動(dòng)/隨機(jī)啟動(dòng):
cd?/usr/local/redis/bin
./redis-server?/usr/local/redis/etc/redis.conf#啟動(dòng)redis并指定配置文件。
#vi?/etc/rc.local?#設(shè)置隨機(jī)啟動(dòng)。
/usr/local/redis/bin/redis-server?/usr/local/redis/etc/redis.conf
5.查看是否啟動(dòng)成功?
ps?-ef?|?grep?redis
netstat?-tunpl?|?grep?6379#查看端口是否占用。
6.進(jìn)入客戶端/退出?
cd?/usr/local/redis/bin
./redis-cli#進(jìn)入
quit#退出
7.關(guān)閉redis??
pkill?redis-server#關(guān)閉
./redis-cli?shutdown#關(guān)閉
************************************Redis安全************************************
?
Redis的安全性???(由以下4種方式)
1.用ACL控制器安全性。
2.在redis.conf配置文件增加下面這一行配置,即可把redis綁定在單個(gè)接口上(但并不是只有接受這個(gè)網(wǎng)卡的數(shù)據(jù))。
bind?127.0.0.1
3.給redis加上較長(zhǎng)密碼(無(wú)需要記住)
4.在redis.conf配置啟用認(rèn)證功能。
5.SSL代理
6.禁用指定命令。
**************************************?Redis配置?**********************************************
daemonize????如果需要在后臺(tái)運(yùn)行,把該項(xiàng)改為yes??
pidfile??????配置多個(gè)pid的地址?默認(rèn)在/var/run/redis.pid
bind?綁定ip,設(shè)置后只接受來(lái)自該ip的請(qǐng)求
port?監(jiān)聽(tīng)端口,默認(rèn)為6379
timeout??????設(shè)置客戶端連接時(shí)的超時(shí)時(shí)間,單位為秒
loglevel?????分為4級(jí),debug、verbose、notice、warning
logfile??????配置log文件地址
databases????設(shè)置數(shù)據(jù)庫(kù)的個(gè)數(shù),默認(rèn)使用的數(shù)據(jù)庫(kù)為0
save?????????設(shè)置redis進(jìn)行數(shù)據(jù)庫(kù)鏡像的頻率
rdbcompression????在進(jìn)行鏡像備份時(shí),是否進(jìn)行壓縮
Dbfilename????????鏡像備份文件的文件名
Dir???數(shù)據(jù)庫(kù)鏡像備份的文件放置路徑
Slaveof?????設(shè)置數(shù)據(jù)庫(kù)為其他數(shù)據(jù)庫(kù)的從數(shù)據(jù)庫(kù)
Masterauth?主數(shù)據(jù)庫(kù)連接需要的密碼驗(yàn)證
Requirepass?????設(shè)置登錄時(shí)需要使用的密碼
Maxclients?限制同時(shí)連接的客戶數(shù)量
Maxmemory?設(shè)置redis能夠使用的最大內(nèi)存
Appendonly?開(kāi)啟append?only模式
以下了解即可:
Appendfsync?設(shè)置對(duì)appendonly.aof文件同步的頻率
vm-enabled?是否開(kāi)啟虛擬內(nèi)存支持
vm-swap-file?設(shè)置虛擬內(nèi)存的交換文件路徑
vm-max-memory?設(shè)置redis使用的最大物理內(nèi)存大小
vm-page-size?設(shè)置虛擬內(nèi)存的頁(yè)大小
vm-pages?設(shè)置交換文件的總的page數(shù)量
vm-max-threads?設(shè)置VM?IO同時(shí)使用的線程數(shù)量
Glueoutputbuf?把小的輸出緩存存放在一起
hash-max-zipmap-entries?設(shè)置hash的臨界值
Activerehashing?重新hash
*******************************************************************
5種數(shù)據(jù)類型:字符串、哈希、鏈表、集合、有序集合。
支持:push/pop、add/remove?、取交集、并集、差集、排序。
redismysql
同時(shí)也會(huì)將數(shù)據(jù)寫到硬盤上。所以數(shù)據(jù)是安全的(除突然斷電外,重啟服務(wù)會(huì)寫到dump.rdb文件中)
*******************************************************************
select?num#選擇庫(kù),默認(rèn)在0庫(kù),共16個(gè)庫(kù)
auth?liweijie#授權(quán)用戶所需密碼(密碼就是redis.conf中配置的密碼)
flushdb#清空數(shù)據(jù)庫(kù)。
String(字符串)類型:?
set?name?lijie#設(shè)置鍵name的值為lijie
get?name#獲取name的值。
keys?*#查詢所有的鍵。
setnx?name?liweijie#如果鍵已存在則返回0,不更新,防止覆蓋。
setex?haircolor?10?red?#設(shè)置鍵的值的有效期為10秒。
setrange?email?6?lampbre.com#替換鍵的值從第6個(gè)字符開(kāi)始換為lampbre.com
mset?name1?李大偉?name2?李小偉#設(shè)置多個(gè)鍵的值。
msetnxname1?張三?name3?李四#判斷鍵是否存在,不存在則設(shè)置,否則不設(shè)置返回0
mget?name1?name2?name3#一次獲取多個(gè)鍵的值。
getset?name1?Tom#重新設(shè)置鍵的值,并返回舊的鍵值。
getrange?email?6?18#截取email鍵的值,從第6-18位間的字符。
incr?uid#每次自增1?(如果key中uid不存在,則設(shè)置并從0開(kāi)始,下同)
incrby?uid?5#每次自增5?
incrby?uid?-5#每次自減5?
decr?uid?#每次自減1
decrby?uid?5#每次自減5
appendname1?@126.com#給name1的值,添加字符串@126.com
strlenname1#返回鍵name1的值的長(zhǎng)度。
*************************************************************************
Hashes(哈希)類型:?
hset?user:001?name?liweijie#哈希設(shè)置用戶user:001的name鍵值為liweijie
hset?user:001?age?21#同樣,增加一個(gè)age鍵值為21
hsetnx?user:001?age?22#同上,但檢測(cè)鍵是否存在。若不存在創(chuàng)建。
hmset?user:002?name?liweijie2?age?26?sex?1#同時(shí)設(shè)置多個(gè)鍵的值。
hget?user:001?name#哈希獲取用戶user:001的name鍵的值。
hget?user:001?age?#同上。
hmget?user:001?name?age?sex#獲取多個(gè)指定的鍵的值。
hgetall?user:001#獲取所有鍵的值。
hincrbyuser:001?age?-8#在指定鍵上加上給定的值。
hexists?user:001?sex#檢測(cè)指定的鍵值是否存在。
hlen?user:001#返回指定哈希的鍵個(gè)數(shù)/字段個(gè)數(shù)。
hdel?user:001?sex#刪除指定(user:001)哈希的指定字段或是鍵值。
hkeys?user:003#返回哈希里所有字段或是鍵值。
*********************************************************************
Lists(鏈表)類型及操作(棧或隊(duì)列):?
lpush?mylist?"world"#從頭部插入字符串
lpush?mylist?"hello"#同上
lrange?mylist?0?-1#獲取從0到最后一個(gè)如[1)?"hello"?2)?"world"]
rpush?mylist?"jiejie"#在尾部插入
linsert?mylist?before?"hello"?"this?is?linsert"?#指定插入位置(在hello之前插入)。
lset?mylist?0?"what"#設(shè)置修改指定下標(biāo)的值。
lrem?mylist?1?"hello"#刪除(1個(gè))一個(gè)值為hello的元素。(n
ltrim?mylist?1?2?#保留表中下標(biāo)為1/2的元素。
lpop?mylist#彈出開(kāi)頭元素并返回。
rpop?mylist#彈出尾部元素并返回。
rpoplpush?mylist?mylist2?#從mylist尾部彈出插入到mylist2的頭部。
lindex?mylist?0#獲取表下標(biāo)為0的元素值。
llen?mylist#返回表元素個(gè)數(shù)(相當(dāng)于count($arr??))。
*********************************************************************
sets(集合)類型及操作(好友推薦、blog、tag功能):?
smembers?myset#查看myset集合中所有元素值。
sadd?myset?"hello"#向mysets集合中添加一個(gè)值hello
srem?myset?"hello"#刪除myset集合中名稱為hello的元素。
spop?myset?#隨機(jī)彈出并返回mysets中的一個(gè)元素。
sdiff?myset2?myset3#返回myset2中的與myset3的差集(以myset2為準(zhǔn))。
sdiffstore?myset4?myset2?myset3#返回myset2中的與myset3的差集,并存入myset4中去。
sinter?myset2?myset3#返回myset2與myset3的交集。
sinterstore?myset5?myset2?myset3#返回myset2與myset3的交集,并存入myset5中去。
sunion?myset2?myset3#求并集(去重復(fù))
sunionstore?myset6?myset2?myset3#求并集,并存入myset6中去。
smove?myset2?myset3?"three"#將myset2中的three移到myset3中去。
scard?myset2#返回元素個(gè)數(shù)。
sismember?myset2?"one"#判斷元素one是不是myset2集合的(相當(dāng)于is_array())。
srandmember?myset2#隨機(jī)返回myset2集合中的一個(gè)元素,但不刪除(相當(dāng)于array_rand())。
*********************************************************************
sorted?sets(有序集合)類型及操作(以scores排序):?
zadd?myzset?1?"one"#向順序1的添加元素one
zadd?myzset?2?"two"#同上。
zadd?myzset?3?"two"#相當(dāng)于更新順序?yàn)?的值
zrange?myzset?0?-1?withscores#查看所有元素并帶上排序(默認(rèn)升序)。
zrem?myzset?"two"#刪除two
zincrby?myzset?2?"two"#將two的順序值加上2
zrank?myzset?"two"#返回集合中元素的索引下標(biāo)值。
zrevrank?myzset?two#元素反轉(zhuǎn)并返回新下標(biāo)值。
zrevrange?myzset?0?-1?withscores#按順序反轉(zhuǎn)(相當(dāng)于降序排序)
zrangebyscore?myzset?1?10?withscores#返回順序?yàn)?-10的元素(可做分頁(yè))。
zcount?myzset?1?10?#返回順序在1-10之間元素的個(gè)數(shù)。
zcard?myzset#返回集合中所有元素的個(gè)數(shù)。
zremrangebyrank?myzset?1?2#刪除集合中下標(biāo)為1到2的元素。
zremrangebyscore?myzset?1?10#刪除集合中順序?yàn)?到10的元素。
Redis常用命令??
鍵/值相關(guān)命令。
keys?*?#查詢所有
keys?user*#查詢指定的
exists?user:001#判斷是否存在。
del?name#刪除指定的鍵。
expire?addr?10#設(shè)置過(guò)期時(shí)間
ttl?addr#查詢過(guò)期時(shí)間
select?0?#選擇數(shù)據(jù)庫(kù)
move?age?1#將age移到1數(shù)據(jù)庫(kù)。
get?age?#獲取
persist?age#移除age的過(guò)期時(shí)間。
randomkey#隨機(jī)返回一個(gè)key
rename?name1?name2#重命名鍵
type?myset#返回鍵的類型。
ping?#測(cè)試redis連接是否存活。
echo?lamp#輸出一個(gè)lamp
select?10#選擇數(shù)據(jù)庫(kù)。
quit/exit/crtl+C#退出客戶端
dbsize#返回庫(kù)里的鍵的個(gè)數(shù)。
服務(wù)器相關(guān)命令:
info#顯示redis服務(wù)器的相關(guān)信息。
config?get?*/loglevel?#返回所有/指定的配置信息。
flushdb#刪除當(dāng)前庫(kù)中的所有鍵/表。
flushall#刪除所有數(shù)據(jù)庫(kù)中的所有鍵/表
?
二、Redis高級(jí)部分:?
1、Redis安全性:??
1.用ACL控制器安全性。
2.給redis加上較長(zhǎng)密碼?
#?requirepass?foobared?
requirepass?beijing?
3.在redis.conf配置啟用認(rèn)證功能。
方式一:Auth?beijing
方式二:./redis-cli?-a?beijing
4.在redis.conf配置文件增加下面這一行配置,即可把redis綁定在單個(gè)接口上(但并不是只有接受這個(gè)網(wǎng)卡的數(shù)據(jù))。
bind?127.0.0.1(單臺(tái)機(jī)器的時(shí)候可以配置,分布式或主從復(fù)制時(shí)最好不要配置)
5.SSL代理
6.禁用指定命令。
2、Redis主從復(fù)制:??
redis只需在從服務(wù)器(slave)上配置即可:
slaveof?211.122.11.11?6379?#指定master?的ip?和端口?
masterauth?beijing#這是master主機(jī)的密碼?
Info#查看主/從服務(wù)器的狀態(tài)。
3、Redis事務(wù)處理:??
Redis事務(wù)很不完善。
4、Redis持久化機(jī)制:??
1.兩種方式:一、備份數(shù)據(jù)到磁盤(快照)[?snapshotting(快照)也是默認(rèn)方式]
???二、記錄操作命令[?Append-only?file(縮寫aof)的方式]
一、備份數(shù)據(jù)到磁盤(快照)[?snapshotting(快照)也是默認(rèn)方式]?
save?900?1?#900秒內(nèi)如果超過(guò)1個(gè)key被修改,則發(fā)起快照保存
save?300?10?#300秒內(nèi)容如超過(guò)10個(gè)key被修改,則發(fā)起快照保存
save?60?10000
二、記錄操作命令[?Append-only?file(縮寫aof)的方式](較安全持久化)?
appendonly?yes?#啟用aof?持久化方式?
#?appendfsync?always?//收到寫命令就立即寫入磁盤,最慢,但是保證完全的持久化?
appendfsync?everysec?//每秒鐘寫入磁盤一次,在性能和持久化方面做了很好的折中
#?appendfsync?no?//完全依賴os,性能最好,持久化沒(méi)保證
?
? ?
? AI ??

Undress AI Tool
??? ???? ??

Undresser.AI Undress
???? ?? ??? ??? ?? AI ?? ?

AI Clothes Remover
???? ?? ???? ??? AI ?????.

Clothoff.io
AI ? ???

Video Face Swap
??? ??? AI ?? ?? ??? ???? ?? ???? ??? ?? ????!

?? ??

??? ??

???++7.3.1
???? ?? ?? ?? ???

SublimeText3 ??? ??
??? ??, ???? ?? ????.

???? 13.0.1 ???
??? PHP ?? ?? ??

???? CS6
??? ? ?? ??

SublimeText3 Mac ??
? ??? ?? ?? ?????(SublimeText3)

??? ??











Laravel 8? ?? ?????? ?? ??? ?????. ?? ?? : Redis? ???? ?? ????, ?? ??, ???? ? ??? ? ??? ??????. ?????? ??? : ???? ???? ?? ??? ???? ???? ??? ?????. JavaScript ? CSS ??? : ?? ??, ?? ? ?? ??? ???? CDN? ??????. ?? ??? : ??? ?? ???? ???? Laravel ??? ??? ???? PSR ??? ?????. ???? ? ?? : Laravel Scout? ???? ???? ???? ?????? ???? ????????.

Redis ?? ???? ?? ?? ??? ?? ??? ??? ?????? ?? ???? ??? ?? a ... ??? ?? ??? ?? ??? ???????.

2024 ?? ?? Laravel ?? ???? ??? ????. 1. Laraveldebugbar, ??? ?????? ????? ? ?????. 2. ??? ?? ???? ????? ???? Laraveltelescope; 3. Laravelhorizon, Redis ??? ?? ??. ??? ?? ?? ?? ??? ? ?? ???? ??? ???? ? ????.

SpringBoot??? redis? ???? Oauth2authorization ??? ??????. SpringBoot ?? ?????? springsecurityoauth2authorizationserver? ?????? ...

?? ?? ???? Laravel ??? ???? ??? ??? ????. 1. windows : XAMPP? ???? PHP ? Composer? ???? ?? ??? ???? Laravel? ?????. 2.MAC : Homebrew? ???? PHP ? ???? ???? Laravel? ??????. 3.Linux : Ubuntu? ???? ???? ?????? PHP ? Composer? ???? Laravel? ??????. ? ???? ?? ??? ??? ???? ?? ??? Laravel ?? ??? ??? ??? ???? ?? ?????.

Redis? ??? ?? ? ???? ???? ????? ?? ??? ?? ? ?? ????? ?? ?? ??????? ????????. 1) Redis? ???, ??, ???, ?? ??? ? ?? ???? ?? ??? ??? ???? ?? ? ??? ???? ??? ?????. 2) RDB? AOF? ? ?? ?? ??? ?? Redis? ??? ??? ???? ? ???? ?? ??? ?????.

?? ?? ???? ??? ?? ??? ????? ??? ???? ???? ???? ???? ...

CentOS ????? Redis Slow Query ??? ????? ?? ?? ???? ??????. ?? ??? ??? ?????. 1 ?? : Redis ?? ?? ?? ? ?? ??, ????? /etc/redis/redis.conf??? redis ?? ??? ?????. ?? ???? ?? ??? ?? ?. sudovi/etc/redis/redis.conf 2 ?? : ?? ???? ?? ?? ?? ?? ?? ??, ?? ?? ??? ?? ??????.
