溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Reidis安裝配置

發(fā)布時間:2020-07-15 12:24:07 來源:網(wǎng)絡(luò) 閱讀:1497 作者:糖在兜兜里 欄目:數(shù)據(jù)庫

一、Redis介紹

  • redis是一個key-value存儲系統(tǒng),官方站點http://redis.io

  • 和memcached類似,但支持數(shù)據(jù)持久化

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

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

  • redis的存儲分為內(nèi)存存儲、磁盤存儲和log文件三部分


二、Redis安裝

cd /usr/local/src
wget   https://codeload.github.com/antirez/redis/tar.gz/2.8.21
mv 2.8.21 redis-2.8.21.tar.gz
tar xf redis-2.8.21.tar.gz
cd redis-2.8.21
make && make PREFIX=/usr/local/redis install
mkdir /usr/local/redis/etc



錯誤:

在包含自 adlist.c:34 的文件中:

zmalloc.h:50:31: 錯誤:jemalloc/jemalloc.h:沒有那個文件或目錄

zmalloc.h:55:2: 錯誤:#error "Newer version of jemalloc required"

make[1]: *** [adlist.o] 錯誤 1

make[1]: Leaving directory `/usr/local/src/redis-2.6.6/src'

make: *** [all] 錯誤 2

解決:

make MALLOC=libc


三、Redis配置

vim  /usr/local/redis/etc/redis.conf============配置文件
daemonize yes
pidfile /usr/local/redis/var/redis.pid
port 6379
timeout 300
loglevel debug
logfile /usr/local/redis/var/redis.log
databases 16
save 900 1
save 300 10
save 60 10000
rdbcompression yes
dbfilename dump.rdb
dir /usr/local/redis/var/
appendonly no
appendfsync always


下面是redis.conf的主 要配置參數(shù)的意義:

daemonize:是否以后臺daemon方式運行

pidfile:pid文件位置

port:監(jiān)聽的端口號

timeout:請求超時時間

loglevel:log信息級別

logfile:log文件位置

databases:開啟數(shù)據(jù)庫的數(shù)量

save * *:保存快照的頻率,第一個*表示多長時間,第三個*表示執(zhí)行多少次寫操作。在一定時間內(nèi)執(zhí)行一定數(shù)量的寫操作時,自動保存快照。可設(shè)置多個條件。

rdbcompression:是否使用壓縮

dbfilename:數(shù)據(jù)快照文件名(只是文件名,不包括目錄)

dir:數(shù)據(jù)快照的保存目錄(這個是目錄)

appendonly:是否開啟appendonlylog,開啟的話每次寫操作會記一條log,這會提高數(shù)據(jù)抗風(fēng)險能力,但影響效率。

appendfsync:appendonlylog如何同步到磁盤(三個選項,分別是每次寫都強制調(diào)用fsync、每秒啟用一次fsync、不調(diào)用fsync等待系統(tǒng)自己同步)


=====================編寫一個redis啟動腳本

vi /etc/init.d/redis   //加入如下內(nèi)容:
#!/bin/sh
#
# redis        init file for starting up the redis daemon
#
# chkconfig:   - 20 80
# description: Starts and stops the redis daemon.
# Source function library.
. /etc/rc.d/init.d/functions
name="redis-server"
basedir="/usr/local/redis"
exec="$basedir/bin/$name"
pidfile="$basedir/var/redis.pid"
REDIS_CONFIG="$basedir/etc/redis.conf"
[ -e /etc/sysconfig/redis ] && . /etc/sysconfig/redis
lockfile=/var/lock/subsys/redis
start() {
    [ -f $REDIS_CONFIG ] || exit 6
    [ -x $exec ] || exit 5
    echo -n $"Starting $name: "
    daemon --user ${REDIS_USER-redis} "$exec $REDIS_CONFIG"
    retval=$?
    echo
    [ $retval -eq 0 ] && touch $lockfile
    return $retval
}
stop() {
    echo -n $"Stopping $name: "
    killproc -p $pidfile $name
    retval=$?
    echo
    [ $retval -eq 0 ] && rm -f $lockfile
    return $retval
}
restart() {
    stop
    start
}
reload() {
    false
}
rh_status() {
    status -p $pidfile $name
}
rh_status_q() {
    rh_status >/dev/null 2>&1
}
case "$1" in
    start)
        rh_status_q && exit 0
        $1
        ;;
    stop)
        rh_status_q || exit 0
        $1
        ;;
    restart)
        $1
        ;;
    reload)
        rh_status_q || exit 7
        $1
        ;;
    force-reload)
        force_reload
        ;;
    status)
        rh_status
        ;;
    condrestart|try-restart)
        rh_status_q || exit 0
        restart
        ;;
    *)
        echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart}"
        exit 2
esac
exit $?


因為腳本啟動時以redis用戶啟動的,所以需要增加redis用戶

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
service redis start


四、Redis數(shù)據(jù)類型

string是最簡單的類型,你可以理解成Memcached一樣的類型,一個key對應(yīng)一個value,騎上支持的操作與Memcached的操作類似,它的功能更豐富。設(shè)置可以存二進制的對象。

/usr/local/redis/bin/redis-cli 

127.0.0.1:6379> mset key1 szk key2 love key3 yc
OK
127.0.0.1:6379> mget key1 key2 key3
1) "szk"
2) "love"
3) "yc"


list是一個鏈表結(jié)構(gòu),主要功能是push、pop、獲取一個范圍的所有值等等。操作中key理解為鏈接的名字。使用List結(jié)構(gòu),我們可以輕松的實現(xiàn)最新消息排行等功能。使用List結(jié)構(gòu),我們可以輕松地實現(xiàn)最新消息排行等功能。List的另一個應(yīng)用就是消息隊列,可以利用list的push操作,將任務(wù)存在list中,然后工作線程再用pop操作將任務(wù)取出進行執(zhí)行。

127.0.0.1:6379> lpush list1 123
(integer) 1
127.0.0.1:6379> lpush list1 aaa
(integer) 2
127.0.0.1:6379> lpush list1 "123 456"
(integer) 3
127.0.0.1:6379> rpop list1
"123"
127.0.0.1:6379> rpop list1
"aaa"
127.0.0.1:6379> rpop list1


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

127.0.0.1:6379> sadd set1 zbc
(integer) 1
127.0.0.1:6379> sadd set1 szk
(integer) 1
127.0.0.1:6379> smembers set1
1) "zbc"


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

127.0.0.1:6379> zadd mset2 2 "cde 123"
(integer) 1
127.0.0.1:6379> zadd mset2 4 "a123a"
(integer) 1
127.0.0.1:6379> zadd mset2 24 "123-aaa"
(integer) 1
127.0.0.1:6379> zrange mset2 0 -1
1) "cde 123"
2) "a123a"
3) "123-aaa"


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


五、Redis持久化

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

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

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

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

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


六、Redis通用配置

  • daemonize no #默認情況下,redis并不是以daemon形式來運行的。通過daemonize配置項可以控制redis的運行形式。

  • pidfile /path/to/redis.pid #當以daemon形式運行時,redis會生成一個pid文件,默認會生成在/var/run/redis.pid

  • bind 192.168.1.200 #指定綁定的IP,可以有多個

  • port 6379 #指定監(jiān)聽端口

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

  • unixsocketperm 755 #當監(jiān)聽socket時可以指定權(quán)限為755

  • timeout 0 #當一個redis-client一直沒有請求發(fā)向server端,那么server端有權(quán)主動關(guān)閉這個連接,可以通過timeout來設(shè)置“空間超時時限”,0表示永不關(guān)閉

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

  • loglevel notice #日志級別,有四種debug,verbose,notice,warning

  • logfile "" #定義日志路徑

  • syslog-ident redis #如果希望日志打印到sysllog中,通過syslog-enabled來控制

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

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


七、Redis快照配置(rdb持久化)

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

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

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

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

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

  • rdbcompression yes #是否要壓縮

  • rdbchecksum yes #是否進行數(shù)據(jù)校驗

  • dir ./ #定義快照文件儲存路徑


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

vim /usr/local/redis/etc/redis.conf  #設(shè)置redis-server的密碼

#增加下面配置

requirepass szk    


/usr/local/redis/bin/redis-cli -a szk  #-a指定密碼登錄



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

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


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

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

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

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

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


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

  • appendonly no #如果是yes,則開啟aof持久化

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

  • appendfsync everysec #指定fsync()調(diào)用模式,有三種no(不調(diào)用fsync),always(每次寫都會調(diào)用fsync),exerysec(每秒鐘調(diào)用一次fsync)。第一種最快,第二種數(shù)據(jù)最安全,但性能會差一些,默認為第三種方案,性能和安全兼顧。

  • no-appendfsync-on-rewrite no #使用no可避免當寫入量非常大時的磁盤IO阻塞

  • auto-aof-rewrite-percentage 10 #規(guī)定什么情況下觸發(fā)aof重寫。該值為一個比例,10表示當aof文件增幅達到10%時則會觸發(fā)重寫機制

  • auto-aof-rewrite-min-size 64mb #重寫會有一個條件,就是不能低于64MB


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

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

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

  • slowlog-max-len 128 #日志長度


十二、Redis主從配置

  • 分別按照之前介紹的步驟安裝好redis并啟動

  • master 配置文件不用動

  • slave配置文件上加一行:slaveof 192.168.1.200 6379

  • masterauth szk  #如果主上設(shè)置了密碼,要加這行

  • 分別啟動master和slave

tail /usr/local/redis/var/redis.log 
3966] 18 Feb 15:02:58.330 * MASTER <-> SLAVE sync: receiving 192 bytes from master
[3966] 18 Feb 15:02:58.330 * MASTER <-> SLAVE sync: Flushing old data
[3966] 18 Feb 15:02:58.330 * MASTER <-> SLAVE sync: Loading DB in memory
[3966] 18 Feb 15:02:58.330 * MASTER <-> SLAVE sync: Finished with success
[3966] 18 Feb 15:03:03.344 - DB 0: 7 keys (0 volatile) in 8 slots HT.
[3966] 18 Feb 15:03:03.344 - 1 clients connected (0 slaves), 466840 bytes in use
[3966] 18 Feb 15:03:08.396 - DB 0: 7 keys (0 volatile) in 8 slots HT.
[3966] 18 Feb 15:03:08.397 - 1 clients connected (0 slaves), 466848 bytes in use


測試:

/usr/local/redis/bin/redis-cli -a szk           主

127.0.0.1:6379> set key1 szk

OK

127.0.0.1:6379> get key1            

"szk"


/usr/local/redis/bin/redis-cli             從

127.0.0.1:6379> get key1

"szk"


OK


十三、Redis主從其他相關(guān)配置

  • slave-read-only yes #讓從只讀

  • repl-ping-slave-period 10  #設(shè)置slave向master發(fā)起ping的頻率,每10s發(fā)起一次

  • repl-timeout 60  #設(shè)置slave ping不同master多少s后就超時

  • repl-disable-tcp-nodelay no  #是否開啟tcp_nodeay,開啟后將會使用更少的帶寬,但會有延遲,所以建議關(guān)閉

  • repl-backlog-size 1mb  #同步隊列的長度,backuplog是master的一個緩沖區(qū),主從斷開后,master會先把數(shù)據(jù)寫到緩沖區(qū),slave再次連接會從緩沖區(qū)中同步數(shù)據(jù)

  • repl-backlog-ttl 3600  #主從斷開后,緩沖區(qū)的有效期,默認1小時

  • slave-priority 100  #多個slave是可以設(shè)置優(yōu)先級的,數(shù)值越小優(yōu)先級越高,應(yīng)用于集群中,支持slave切換為mster,優(yōu)先級最高的才會切換

  • min-slave-to-write 3 #和下面的一起使用,它的意思是master發(fā)現(xiàn)有超過3個slave的延遲高于10s,那么master就會暫時停止寫操作。這兩個數(shù)值任何一個為0,則關(guān)閉該功能,默認第一數(shù)值是0

  • min-slaves-max-log 10 


十四、string常用操作

127.0.0.1:6379> set key1 szk  #給key1賦值為szk
OK 
127.0.0.1:6379> get key1    #獲取這個值value
"szk"
127.0.0.1:6379> set key1 yc  #一個key對應(yīng)一個value,多次賦值,會覆蓋前面的value
OK
127.0.0.1:6379> get key1  
"yc"
127.0.0.1:6379> setex key3 10 1   #用來給key設(shè)定過期時間,ttl key3查看時間
OK
127.0.0.1:6379> mset key1 1 key2 2 key3 3    #同時設(shè)置多個key
OK
127.0.0.1:6379> mget key1 key2 key3    
1) "1"
2) "2"
3) "3"


十五、Hash常用操作

127.0.0.1:6379> hset hash2 name szk
(integer) 1
127.0.0.1:6379> hset hash2  age 23
(integer) 1
127.0.0.1:6379> hset hash2  job it
(integer) 1
127.0.0.1:6379> hgetall hash2 
1) "name"
2) "szk"
3) "age"
4) "23"
5) "job"
6) "it"
127.0.0.1:6379> hmset hash3 name yc age 24 job teacher    #批量創(chuàng)建
OK
127.0.0.1:6379> hgetall hash3
1) "name"
2) "yc"
3) "age"
4) "24"
5) "job"
6) "teacher"
127.0.0.1:6379> hdel hash3 job     #刪除某個值
(integer) 1
127.0.0.1:6379> hgetall hash3
1) "name"
2) "yc"
3) "age"
4) "24"
127.0.0.1:6379> hkeys hash3   #查看所有的key
1) "name"
2) "age"
127.0.0.1:6379> hvals hash3   #查看所有的values
1) "yc"
2) "24"
127.0.0.1:6379> hlen hash3    #查看hash有幾個filed
(integer) 2

十六、list常用操作

127.0.0.1:6379> lpush list1 a    #從左邊插入
(integer) 3
127.0.0.1:6379> lpush list1 b     #從左邊插入
(integer) 4
127.0.0.1:6379> lpush list1 c      #從左邊插入
(integer) 5
127.0.0.1:6379> lrange list1 0 -1       #從左邊往右羅列,最先插入在最后邊
1) "c"
2) "b"
3) "a"
127.0.0.1:6379> lpop list1          #從最左邊取出
"c"
127.0.0.1:6379> lrange list1 0 -1    #從左邊往右羅列
1) "b"
2) "a"
127.0.0.1:6379> rpush list1 1          #從右邊插入
(integer) 5
127.0.0.1:6379> rpush list1 2           #從右邊插入
(integer) 6
127.0.0.1:6379> rpush list1 3           #從右邊插入
(integer) 7
127.0.0.1:6379> lrange list1 0 -1       #從右往左羅列,最后插入在最后邊
1) "b"
2) "a"
3) "1"
4) "2"
5) "3"
127.0.0.1:6379> linsert list1  before 3  5        #在3前面插入一個5
(integer) 8
127.0.0.1:6379> lrange list1 0 -1
1) "b"
2) "a"
3) "1"
4) "2"
5) "5"
6) "3"
127.0.0.1:6379> lset list1 7 6             #將0開始的第7個元素換成6
OK
127.0.0.1:6379> lrange list1 0 -1
1) "b"
2) "a"
3) "456"
4) "123"
5) "1"
6) "2"
7) "5"
8) "6"
127.0.0.1:6379> lindex list1 7     #查看從0開始的第7個元素
"6"
127.0.0.1:6379> llen list1          #查看列表中有幾個元素
(integer) 8

十七、set數(shù)據(jù)常用操作 

127.0.0.1:6379> sadd set1 1        #向集合set1中放入元素
(integer) 1
127.0.0.1:6379> sadd set1 2
(integer) 1
127.0.0.1:6379> sadd set1 3
(integer) 1
127.0.0.1:6379> sadd set1 4
(integer) 1
127.0.0.1:6379> smembers set1    #查看集合中所有元素
1) "zbc"
2) "1"
3) "szk"
4) "2"
5) "3"
6) "4"
127.0.0.1:6379> spop set1     #隨機取出一個元素,刪除
"szk"
127.0.0.1:6379> sdiff set1 seta       #比較差集,以set1為主來比較
1) "zbc"
2) "4"
127.0.0.1:6379> sdiffstore set3  seta set1   #比較差集,將結(jié)果存入set3中
(integer) 2
127.0.0.1:6379> SMEMBERS set3    #tab自動補全,但顯示為大寫
1) "2"
2) "szk"


十八、zset常用操作

127.0.0.1:6379> zadd zset1 1 abc     #創(chuàng)建有序集合
(integer) 1
127.0.0.1:6379> zadd zset1 10 aabc   #創(chuàng)建有序集合
(integer) 1
127.0.0.1:6379> zadd zset1 5 aaa    #創(chuàng)建有序集合
(integer) 1
127.0.0.1:6379> zadd zset1 88 bbb   #創(chuàng)建有序集合
(integer) 1
127.0.0.1:6379> zadd zset1 888 szk   #創(chuàng)建有序集合
(integer) 1
127.0.0.1:6379> ZRANGE zset1 0 -1   #顯示所有元素,按順序顯示
1) "abc"
2) "aaa"
3) "aabc"
4) "bbb"
5) "szk"
127.0.0.1:6379> ZRANGE zset1 0 -1 withscores    #可以帶上分值
 1) "abc"
 2) "1"
 3) "aaa"
 4) "5"
 5) "aabc"
 6) "10"
 7) "bbb"
 8) "88"
 9) "szk"
10) "888"
127.0.0.1:6379> ZREM zset1 abc       #刪除指定元素
(integer) 1
127.0.0.1:6379> ZRANGE zset1 0 -1 withscores
1) "aaa"
2) "5"
3) "aabc"
4) "10"
5) "bbb"
6) "88"
7) "szk"
8) "888"
127.0.0.1:6379> zrevrank zset1 szk  #返回元素的索引值,索引值從0開始,按score正向排序
(integer) 0
127.0.0.1:6379> zrank zset1 szk     #同上,不同的是,按score反序排序
(integer) 3
127.0.0.1:6379> ZCARD  zset1   #查看集合元素的個數(shù)
(integer) 4 
127.0.0.1:6379> zcount zset1 1 20   #查看分值區(qū)間內(nèi)的元素個數(shù)
(integer) 2
127.0.0.1:6379> zrangebyscore zset1 1 100 withscores   #返回分支范圍在1-100的元素
1) "aaa"
2) "5"
3) "aabc"
4) "10"
5) "bbb"
6) "88"
127.0.0.1:6379> zrangebyscore zset1 0 10    #刪除分支范圍在0-10的元素,按score排序
1) "aaa"
2) "aabc"


十九、鍵值和服務(wù)器命令

127.0.0.1:6379> keys *            #列出所有鍵值
 1) "key3"
 2) "seta"
 3) "hash2"
 4) "list1"
 5) "key2"
 6) "zset1"
 7) "mset2"
 8) "set2"
 9) "set1"
10) "key1"
11) "hash3"
12) "set3"
127.0.0.1:6379> keys key*
1) "key3"
2) "key2"
3) "key1"
127.0.0.1:6379> EXISTS list1      #查看是否有l(wèi)ist1
(integer) 1
127.0.0.1:6379> del key1      #刪除key1
(integer) 1
127.0.0.1:6379> EXISTS key1
(integer) 0
127.0.0.1:6379> EXPIRE key3 10     #設(shè)置過期時間
(integer) 1
127.0.0.1:6379> get key3
"3"
127.0.0.1:6379> ttl key3    #查看key的過期時間,-1不存在過期  -2不存儲鍵值
(integer) -2
127.0.0.1:6379> EXists key3
(integer) 0
127.0.0.1:6379> select 0     #切換庫,默認16個庫
OK
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> set key1 111   #新建一個鍵值
OK
127.0.0.1:6379[1]> keys *
1) "key1"
127.0.0.1:6379[1]> move set1 2    #移動到庫2
(integer) 0
127.0.0.1:6379[1]> select 2     #切換庫2
OK
127.0.0.1:6379[2]> keys *    
1) "key1"
127.0.0.1:6379[2]> EXPIRE key1 200    #設(shè)置過期時間
(integer) 1
127.0.0.1:6379[2]> ttl key1
(integer) 193
127.0.0.1:6379[2]> PERSIST key1     #取消過期時間
(integer) 1
127.0.0.1:6379[2]> ttl key1
(integer) -1
127.0.0.1:6379[2]> RANDOMKEY    #隨機返回一個key
"key1"
127.0.0.1:6379[2]> RENAME key1 szk   #更改一個key的名字
OK
127.0.0.1:6379[2]> keys *
1) "szk"
127.0.0.1:6379[2]> type szk         #查看一個鍵值的類型
string


二十、服務(wù)相關(guān)的操作

127.0.0.1:6379[2]> DBSIZE    #查看一個庫的鍵值數(shù)
(integer) 1
127.0.0.1:6379[2]> select 0
OK
127.0.0.1:6379> DBSIZE 
(integer) 10
127.0.0.1:6379> info   #查看redis服務(wù)信息
# Server
redis_version:2.8.21
redis_git_sha1:00000000
略
127.0.0.1:6379> flushdb    #清空當前數(shù)據(jù)庫中所有的鍵
OK
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> flushall   #清空所有數(shù)據(jù)庫中的所有的key
OK
127.0.0.1:6379> SELECT 1
OK
127.0.0.1:6379[1]> keys *
(empty list or set)

二十一、PHP中應(yīng)用Redis

cd /usr/local/src
wget  http://pecl.php.net/get/redis-2.2.5.tgz
tar xf redis-2.2.5.tgz
cd redis-2.2.5
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-confi
make ; make install
mv /usr/local/php/lib/php/extensions/no-debug-zts-20100525/redis.so /usr/lib64/
vim /usr/local/php/php.iniextension_dir = /usr/lib64/extension = redis.so
usr/local/php/bin/php -m | grep redisredis


## 加載成功,可以重啟 nginx 看看 phpinfo 頁


二十二、Redis實現(xiàn)session共享

  • php.ini中加入

session.save_handler = "redis"

session.save_path = "tcp://127.0.0.1:6379"

  • 或者apache虛擬主機加入

php_value session.save_handler "redis"

php_value session.save_path "tcp://127.0.0.1:6379"

  • 或者php-fpm.conf對應(yīng)的pool中加入

php_value[session.save_handler] = redis

php_value[session.save_path] = " tcp://127.0.0.1:6379 "


向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI