Redis使用詳細教程

來源:互聯網
上載者:User

Redis使用詳細教程
一、Redis基礎部分:

1、redis介紹與安裝比mysql快10倍以上

************redis適用場合***********

1.取最新N個資料的操作

2.熱門排行榜應用,取TOP N 操作

3.需要精確設定到期時間的應用

4.計數器應用

5.Uniq操作,擷取某段時間所有資料排重值

6.即時系統,反垃圾系統7.Pub/Sub構建即時訊息系統

7.Pub/Sub構建即時訊息系統8.構建隊列系統

9.緩衝

=============================================

SET操作每秒鐘 110000 次,GET操作每秒鐘 81000 次,伺服器配置如下:

Linux 2.6, Xeon X3320 2.5Ghz.

stackoverflow 網站使用 Redis 做為快取服務器。

同時也會將資料寫到硬碟上。所以資料是安全的(除突然斷電外,重啟服務會寫到dump.rdb檔案中)

1.安裝:

tar zxvf redis-2.6.9.tar.gz

cd redis-2.6.9

make

cd src && make install

2.移動設定檔位置(為了便於管理)

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指後台運行]

4.啟動/隨機啟動:

cd /usr/local/redis/bin

./redis-server /usr/local/redis/etc/redis.conf#啟動redis並指定設定檔。

vi /etc/rc.local #設定隨機啟動。

/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf

5.查看是否啟動成功

ps -ef | grep redis

netstat -tunpl | grep 6379#查看連接埠是否佔用。

6.進入用戶端/退出

cd /usr/local/redis/bin

./redis-cli#進入

quit#退出

7.關閉redis

pkill redis-server#關閉

./redis-cli shutdown#關閉

*******************************Redis安全*******************************

Redis的安全性???(由以下4種方式)

1.用ACL控制器安全性。

2.在redis.conf設定檔增加下面這一行配置,即可把redis綁定在單個介面上(但並不是只有接受這個網卡的資料)。

bind 127.0.0.1

3.給redis加上較長密碼(無需要記住)

4.在redis.conf配置啟用認證功能。

5.SSL代理

6.禁用指定命令。

**************************** Redis配置 ************************************

daemonize 如果需要在後台運行,把該項改為yes

pidfile 配置多個pid的地址 預設在/var/run/redis.pid

bind 綁定ip,設定後只接受來自該ip的請求

port 監聽連接埠,預設為6379

timeout 設定用戶端串連時的逾時時間,單位為秒

loglevel 分為4級,debug、verbose、notice、warning

logfile 配置log檔案地址

databases 設定資料庫的個數,預設使用的資料庫為0

save 設定redis進行資料庫鏡像的頻率

rdbcompression 在進行鏡像備份時,是否進行壓縮

Dbfilename 鏡像備份檔案的檔案名稱

Dir 資料庫鏡像備份的檔案放置路徑

Slaveof 設定資料庫為其他資料庫的從資料庫

Masterauth 主要資料庫串連需要的密碼驗證

Requirepass 設定登入時需要使用的密碼

Maxclients 限制同時串連的客戶數量

Maxmemory 設定redis能夠使用的最大記憶體

Appendonly 開啟append only模式

以下瞭解即可:

Appendfsync 設定對appendonly.aof檔案同步的頻率

vm-enabled 是否開啟虛擬記憶體支援

vm-swap-file 設定虛擬記憶體的分頁檔路徑

vm-max-memory 設定redis使用的最大實體記憶體大小

vm-page-size 設定虛擬記憶體的頁大小

vm-pages 設定分頁檔的總的page數量

vm-max-threads 設定VM IO同時使用的線程數量

Glueoutputbuf 把小的輸出緩衝存放在一起

hash-max-zipmap-entries 設定hash的臨界值

Activerehashing 重新hash

5種資料類型:字串、雜湊、鏈表、集合、有序集合。

支援:push/pop、add/remove 、取交集、並集、差集、排序。

redis<===同步====>mysql

同時也會將資料寫到硬碟上。所以資料是安全的(除突然斷電外,重啟服務會寫到dump.rdb檔案中)

select num#選擇庫,預設在0庫,共16個庫

auth liweijie#授權使用者所需密碼(密碼就是redis.conf中配置的密碼)

flushdb#清空資料庫。

String(字串)類型:

set name lijie#設定鍵name的值為lijie

get name#擷取name的值。

keys *#查詢所有的鍵。

setnx name liweijie#如果鍵已存在則返回0,不更新,防止覆蓋。

setex haircolor 10 red #設定鍵的值的有效期間為10秒。

setrange email 6 lampbre.com#替換鍵的值從第6個字元開始換為lampbre.com

mset name1 李大偉 name2 李小偉#設定多個鍵的值。

msetnxname1 張三 name3 李四#判斷鍵是否存在,不存在則設定,否則不設定返回0

mget name1 name2 name3#一次擷取多個鍵的值。

getset name1 Tom#重新設定鍵的值,並返回舊的索引值。

getrange email 6 18#截取email鍵的值,從第6-18位間的字元。

incr uid#每次自增1 (如果key中uid不存在,則設定並從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#雜湊設定使用者user:001的name索引值為liweijie

hset user:001 age 21#同樣,增加一個age索引值為21

hsetnx user:001 age 22#同上,但檢測鍵是否存在。若不存在建立。

hmset user:002 name liweijie2 age 26 sex 1#同時設定多個鍵的值。

hget user:001 name#雜湊擷取使用者user:001的name鍵的值。

hget user:001 age #同上。

hmget user:001 name age sex#擷取多個指定的鍵的值。

hgetall user:001#擷取所有鍵的值。

hincrbyuser:001 age -8#在指定鍵上加上給定的值。

hexists user:001 sex#檢測指定的索引值是否存在。

hlen user:001#返回指定雜湊的鍵個數/欄位個數。

hdel user:001 sex#刪除指定(user:001)雜湊的指定欄位或是索引值。

hkeys user:003#返回雜湊裡所有欄位或是索引值。

Lists(鏈表)類型及操作(棧或隊列):

lpush mylist “world”#從頭部插入字串

lpush mylist “hello”#同上

lrange mylist 0 -1#擷取從0到最後一個如[1) “hello” 2) “world”]

rpush mylist “jiejie”#在尾部插入

linsert mylist before “hello” “this is linsert” #指定插入位置(在hello之前插入)。

lset mylist 0 “what”#設定修改指定下標的值。

lrem mylist 1 “hello”#刪除(1個)一個值為hello的元素。(n<0從尾部刪除,n=0全部刪除)

ltrim mylist 1 2 #保留表中下標為1/2的元素。

lpop mylist#彈出開頭元素並返回。

rpop mylist#彈出尾部元素並返回。

rpoplpush mylist mylist2 #從mylist尾部彈出插入到mylist2的頭部。

lindex mylist 0#擷取表下標為0的元素值。

llen mylist#返回表元素個數(相當於count($arr ))。

sets(集合)類型及操作(好友推薦、blog、tag功能):

smembers myset#查看myset集合中所有元素值。

sadd myset “hello”#向mysets集合中添加一個值hello

srem myset “hello”#刪除myset集合中名稱為hello的元素。

spop myset #隨機彈出並返回mysets中的一個元素。

sdiff myset2 myset3#返回myset2中的與myset3的差集(以myset2為準)。

sdiffstore myset4 myset2 myset3#返回myset2中的與myset3的差集,並存入myset4中去。

sinter myset2 myset3#返回myset2與myset3的交集。

sinterstore myset5 myset2 myset3#返回myset2與myset3的交集,並存入myset5中去。

sunion myset2 myset3#求並集(去重複)

sunionstore myset6 myset2 myset3#求並集,並存入myset6中去。

smove myset2 myset3 “three”#將myset2中的three移到myset3中去。

scard myset2#返回元素個數。

sismember myset2 “one”#判斷元素one是不是myset2集合的(相當於is_array())。

srandmember myset2#隨機返回myset2集合中的一個元素,但不刪除(相當於array_rand())。

sorted sets(有序集合)類型及操作(以scores排序):

zadd myzset 1 “one”#向順序1的添加元素one

zadd myzset 2 “two”#同上。

zadd myzset 3 “two”#相當於更新順序為2的值

zrange myzset 0 -1 withscores#查看所有元素並帶上排序(預設升序)。

zrem myzset “two”#刪除two

zincrby myzset 2 “two”#將two的順序值加上2

zrank myzset “two”#返回集合中元素的索引下標值。

zrevrank myzset two#元素反轉並返回新下標值。

zrevrange myzset 0 -1 withscores#按順序反轉(相當於降序排序)

zrangebyscore myzset 1 10 withscores#返回順序為1-10的元素(可做分頁)。

zcount myzset 1 10 #返回順序在1-10之間元素的個數。

zcard myzset#返回集合中所有元素的個數。

zremrangebyrank myzset 1 2#刪除集合中下標為1到2的元素。

zremrangebyscore myzset 1 10#刪除集合中順序為1到10的元素。

Redis常用命令

鍵/值相關命令。

keys * #查詢所有

keys user*#查詢指定的

exists user:001#判斷是否存在。

del name#刪除指定的鍵。

expire addr 10#設定到期時間

ttl addr#查詢到期時間

select 0 #選擇資料庫

move age 1#將age移到1資料庫。

get age #擷取

persist age#移除age的到期時間。

randomkey#隨機返回一個key

rename name1 name2#重新命名鍵

type myset#返回鍵的類型。

ping #測試redis串連是否存活。

echo lamp#輸出一個lamp

select 10#選擇資料庫。

quit/exit/crtl+C#退出用戶端

dbsize#返回庫裡的鍵的個數。

伺服器相關命令:

info#顯示redis伺服器的相關資訊。

config get */loglevel #返回所有/指定的配置資訊。

flushdb#刪除當前庫中的所有鍵/表。

flushall#刪除所有資料庫中的所有鍵/表

二、Redis進階部分:

1、Redis安全性:

1.用ACL控制器安全性。

2.給redis加上較長密碼

requirepass foobared

requirepass beijing

3.在redis.conf配置啟用認證功能。

方式一:Auth beijing

方式二:./redis-cli -a beijing

4.在redis.conf設定檔增加下面這一行配置,即可把redis綁定在單個介面上(但並不是只有接受這個網卡的資料)。

bind 127.0.0.1(單台機器的時候可以配置,分布式或主從複製時最好不要配置)

5.SSL代理

6.禁用指定命令。

2、Redis主從複製:

redis只需在從伺服器(slave)上配置即可:

slaveof 211.122.11.11 6379 #指定master 的ip 和連接埠

masterauth beijing#這是master主機的密碼

Info#查看主/從伺服器的狀態。

3、Redis交易處理:

Redis事務很不完善。

4、Redis持久化機制:

1.兩種方式:一、備份資料到磁碟(快照)[ snapshotting(快照)也是預設]

二、記錄操作命令[ Append-only file(縮寫aof)的方式]

一、備份資料到磁碟(快照)[ snapshotting(快照)也是預設]

save 900 1 #900秒內如果超過1個key被修改,則發起快照儲存

save 300 10 #300秒內容如超過10個key被修改,則發起快照儲存

save 60 10000

二、記錄操作命令 Append-only file(縮寫aof)的方式

appendonly yes #啟用aof 持久化方式

appendfsync always //收到寫命令就立即寫入磁碟,最慢,但是保證完全的持久化

appendfsync everysec //每秒鐘寫入磁碟一次,在效能和持久化方面做了很好的折中

appendfsync no //完全依賴os,效能最好,持久化沒保證

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.