Redis使用詳細(xì)教程,redis教程
Jul 06, 2016 pm 02:25 PMRedis使用詳細(xì)教程,redis教程
一、Redis基礎(chǔ)部分:?
1、redis介紹與安裝比mysql快10倍以上?
*****************redis適用場合****************
1.取最新N個(gè)數(shù)據(jù)的操作
2.排行榜應(yīng)用,取TOP?N?操作
3.需要精確設(shè)定過期時(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加上較長密碼(無需要記住)
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è)置后只接受來自該ip的請求
port?監(jiān)聽端口,默認(rèn)為6379
timeout??????設(shè)置客戶端連接時(shí)的超時(shí)時(shí)間,單位為秒
loglevel?????分為4級,debug、verbose、notice、warning
logfile??????配置log文件地址
databases????設(shè)置數(shù)據(jù)庫的個(gè)數(shù),默認(rèn)使用的數(shù)據(jù)庫為0
save?????????設(shè)置redis進(jìn)行數(shù)據(jù)庫鏡像的頻率
rdbcompression????在進(jìn)行鏡像備份時(shí),是否進(jìn)行壓縮
Dbfilename????????鏡像備份文件的文件名
Dir???數(shù)據(jù)庫鏡像備份的文件放置路徑
Slaveof?????設(shè)置數(shù)據(jù)庫為其他數(shù)據(jù)庫的從數(shù)據(jù)庫
Masterauth?主數(shù)據(jù)庫連接需要的密碼驗(yàn)證
Requirepass?????設(shè)置登錄時(shí)需要使用的密碼
Maxclients?限制同時(shí)連接的客戶數(shù)量
Maxmemory?設(shè)置redis能夠使用的最大內(nèi)存
Appendonly?開啟append?only模式
以下了解即可:
Appendfsync?設(shè)置對appendonly.aof文件同步的頻率
vm-enabled?是否開啟虛擬內(nèi)存支持
vm-swap-file?設(shè)置虛擬內(nèi)存的交換文件路徑
vm-max-memory?設(shè)置redis使用的最大物理內(nèi)存大小
vm-page-size?設(shè)置虛擬內(nèi)存的頁大小
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#選擇庫,默認(rèn)在0庫,共16個(gè)庫
auth?liweijie#授權(quán)用戶所需密碼(密碼就是redis.conf中配置的密碼)
flushdb#清空數(shù)據(jù)庫。
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è)字符開始換為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開始,下同)
incrby?uid?5#每次自增5?
incrby?uid?-5#每次自減5?
decr?uid?#每次自減1
decrby?uid?5#每次自減5
appendname1?@126.com#給name1的值,添加字符串@126.com
strlenname1#返回鍵name1的值的長度。
*************************************************************************
Hashes(哈希)類型:?
hset?user:001?name?liweijie#哈希設(shè)置用戶user:001的name鍵值為liweijie
hset?user:001?age?21#同樣,增加一個(gè)age鍵值為21
hsetnx?user:001?age?22#同上,但檢測鍵是否存在。若不存在創(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#檢測指定的鍵值是否存在。
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#彈出開頭元素并返回。
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的元素(可做分頁)。
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è)置過期時(shí)間
ttl?addr#查詢過期時(shí)間
select?0?#選擇數(shù)據(jù)庫
move?age?1#將age移到1數(shù)據(jù)庫。
get?age?#獲取
persist?age#移除age的過期時(shí)間。
randomkey#隨機(jī)返回一個(gè)key
rename?name1?name2#重命名鍵
type?myset#返回鍵的類型。
ping?#測試redis連接是否存活。
echo?lamp#輸出一個(gè)lamp
select?10#選擇數(shù)據(jù)庫。
quit/exit/crtl+C#退出客戶端
dbsize#返回庫里的鍵的個(gè)數(shù)。
服務(wù)器相關(guān)命令:
info#顯示redis服務(wù)器的相關(guān)信息。
config?get?*/loglevel?#返回所有/指定的配置信息。
flushdb#刪除當(dāng)前庫中的所有鍵/表。
flushall#刪除所有數(shù)據(jù)庫中的所有鍵/表
?
二、Redis高級部分:?
1、Redis安全性:??
1.用ACL控制器安全性。
2.給redis加上較長密碼?
#?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)如果超過1個(gè)key被修改,則發(fā)起快照保存
save?300?10?#300秒內(nèi)容如超過10個(gè)key被修改,則發(fā)起快照保存
save?60?10000
二、記錄操作命令[?Append-only?file(縮寫aof)的方式](較安全持久化)?
appendonly?yes?#啟用aof?持久化方式?
#?appendfsync?always?//收到寫命令就立即寫入磁盤,最慢,但是保證完全的持久化?
appendfsync?everysec?//每秒鐘寫入磁盤一次,在性能和持久化方面做了很好的折中
#?appendfsync?no?//完全依賴os,性能最好,持久化沒保證
?
? ?
Hei?e KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?er Artikel

Hei?e Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Die wesentlichen Laravel -Erweiterungspakete für 2024 umfassen: 1. Laraveldebugbar, zum überwachen und Debugg -Code; 2. LaravelTelescope, die eine detaillierte Anwendungsüberwachung bereitstellt; 3.. Laravelhorizon, Managing Redis -Warteschlangenaufgaben. Diese Expansionspakete k?nnen die Entwicklungseffizienz und die Anwendungsleistung verbessern.

Die Schritte zum Erstellen einer Laravel -Umgebung auf verschiedenen Betriebssystemen sind wie folgt: 1.Windows: Verwenden Sie XAMPP, um PHP und Komponist zu installieren, Umgebungsvariablen zu konfigurieren und Laravel zu installieren. 2.MAC: Verwenden Sie Homebrew, um PHP und Komponist zu installieren und Laravel zu installieren. 3.Linux: Verwenden Sie Ubuntu, um das System zu aktualisieren, PHP und Komponist zu installieren und Laravel zu installieren. Die spezifischen Befehle und Pfade jedes Systems sind unterschiedlich, die Kernschritte sind jedoch konsistent, um die reibungslose Konstruktion der Laravel -Entwicklungsumgebung zu gew?hrleisten.

Redis ist traditionellen Datenbanken in hoher Parallelit?ts- und Latenz -Szenarien überlegen, ist jedoch nicht für komplexe Abfragen und Transaktionsverarbeitung geeignet. 1.Redis verwendet Speicherspeicher-, Schnelllese- und Schreibgeschwindigkeit, geeignet für Anforderungen an eine hohe Parallelit?t und niedrige Latenz. 2. Traditionelle Datenbanken basieren auf Festplatten, unterstützen komplexe Abfragen und Transaktionsverarbeitung und haben eine starke Datenkonsistenz und -dauer. 3.. Redis ist als Erg?nzung oder Ersatz für herk?mmliche Datenbanken geeignet, muss jedoch nach bestimmten Gesch?ftsbedürfnissen ausgew?hlt werden.

Linux -System beschr?nkt die Benutzerressourcen durch den Befehl ulimit, um eine überm??ige Verwendung von Ressourcen zu verhindern. 1.ulimit ist ein integrierter Shell-Befehl, mit dem die Anzahl der Dateideskriptoren (-n), die Speichergr??e (-V), die Threadzahl (-U) usw. begrenzt werden kann, die in Soft Limit (aktueller effektiver Wert) und hartem Grenze (maximale Obergrenze) unterteilt sind. 2. Verwenden Sie den Befehl ulimit direkt zur vorübergehenden ?nderung, wie z. B. Ulimit-N2048, ist jedoch nur für die aktuelle Sitzung gültig. 3. Für den dauerhaften Effekt müssen Sie /etc/security/limits.conf- und PAM -Konfigurationsdateien ?ndern und SessionRequiredpam_Limits.so hinzufügen. 4. Der SystemD -Dienst muss Lim in der Einheitsdatei einstellen

Redis ist in erster Linie eine Datenbank, aber mehr als nur eine Datenbank. 1. Als Datenbank unterstützt Wiedererlangung die Persistenz und eignet sich für leistungsstarke Bedürfnisse. 2. Als Cache verbessert Redis die Reaktionsgeschwindigkeit der Anwendung. 3. Als Message Broker unterstützt Redis den Ver?ffentlichungs-Subscribe-Modus, der für die Echtzeitkommunikation geeignet ist.

Redis geht aufgrund seiner hohen Leistung und Flexibilit?t über die SQL -Datenbanken hinaus. 1) Redis erreicht extrem schnelle Lesen und Schreiben von Geschwindigkeit über Speicherspeicher. 2) Es unterstützt eine Vielzahl von Datenstrukturen wie Listen und Sammlungen, die für die komplexe Datenverarbeitung geeignet sind. 3) Einfach-Thread-Modell vereinfacht die Entwicklung, aber eine hohe Parallelit?t kann zu einem Engpass werden.

Zu den Schritten zum Erstellen einer dynamischen PHP -Website mithilfe von Phpstudy geh?ren: 1. Installieren Sie Phpstudy und starten Sie den Dienst; 2. Konfigurieren Sie das Root -Verzeichnis der Website und die Datenbankverbindung. 3. Schreiben Sie PHP -Skripte, um dynamische Inhalte zu generieren. 4.. Debuggen und optimieren Sie die Website -Leistung. Durch diese Schritte k?nnen Sie eine voll funktionsf?hige dynamische PHP -Website von Grund auf neu erstellen.

Redisisanopen-Source, In-MemoryDatastructurEnusedasadatabase, Cache und MessageBroker, ExcellingInSpeedandversatility
