1. 程式人生 > >linux下安裝redis+redis主從配置+redis基本命令

linux下安裝redis+redis主從配置+redis基本命令

linux安裝redis

redis安裝步驟如下:

linux命令下載

wget –p /java/redis “chainUrl”;指定下載目錄

1、下載redis安裝包。下載地址為https://redis.io/download

下載下來的檔案為redis-3.2.9.tar.gz

2、通過WinSCP工具把安裝包上傳到linux系統上面

建立一個redis的目錄存放安裝包和編譯之後的檔案

mkdir redis

3、解壓安裝包

tar -zxvf redis-3.2.9.tar.gz

4、編譯安裝

進入redis解壓之後的目錄redis-3.2.9

cd redis-3.2.9

然後執行make命令進行編譯

make

編譯完成之後使用ls或者ll命令檢視當前檔案目錄下的檔案目錄和資料夾

1. 如果輸入make提示 : make: cc:命令未找到

原因:

未安裝gcc

解決方法:

安裝gcc

[[email protected] ~]$ yum -y install gcc automake autoconf libtool make

ls

可以看見多了一個src的目錄。

[[email protected] redis-3.2.9]# ls

00-RELEASENOTES  CONTRIBUTING  deps     Makefile   README.md   runtest          

runtest-sentinel  src    utils

BUGS             COPYING       INSTALL  MANIFESTO  redis.conf  runtest-cluster  

sentinel.conf     tests

5、把啟動需要的檔案移動到一個相對層次比較低的目錄,目的是為了寫啟動指令碼的時候比較方便

首先在redis目錄下新建一個conf目錄,然後把啟動需要的檔案啟動到conf目錄下。

mkdir  /home/user/redis/conf

cd  src

cp redis-server  /home/user/redis/conf

cp redis-cli  /home/user/redis/conf

cp redis-benchmark  /home/user/redis/conf

cp ../redis.conf  /home/user/redis/conf

6、啟動停止redis

cd/home/user/Redis/conf

啟動 ./redis-server filePath(redis.conf)

 後臺啟動: ./redis-server &

停止 ./redis-cli -p 6379 shutdown

使用./redis-cli 連線redis進行測試redis是否啟動成功

[[email protected] local]$ ./redis-cli

127.0.0.1:6379> set name testname

OK

127.0.0.1:6379> get name

"testname"

測試成功

1.直接啟動
  進入redis根目錄,執行命令:
  #加上‘&’號使redis以後臺程式方式執行

1

./redis-server &

 2.通過指定配置檔案啟動
  可以為redis服務啟動指定配置檔案,例如配置為/etc/redis/6379.conf
  進入redis根目錄,輸入命令:

1

./redis-server /etc/redis/6379.conf

  #如果更改了埠,使用`redis-cli`客戶端連線時,也需要指定埠,例如:

1

redis-cli -p 6380

7、修改redis.conf配置檔案,使得可以遠端訪問不受限制。如果需要限制可以訪問redis的許可權,可以使用bind指定ip

修改/home/user/redis/conf目錄下的redis.conf檔案

viredis.conf

找到‘daemonize no’改為‘daemonize yes‘

找到# bind 127.0.0.1 ::1並註釋掉

然後退出儲存

8、配置redis為開機啟動,需要寫一個redis的啟動停止指令碼。

cd/etc/init.d/

vi redis

裡面的具體程式碼如下:

  1

  2

  3

  4

  5

  6

  7

  8

  9

 10

 11

 12

 13

 14

 15

 16

 17

 18

 19

 20

 21

 22

 23

 24

 25

 26

 27

 28

 29

 30

 31

 32

 33

 34

 35

 36

 37

 38

 39

 40

 41

 42

 43

 44

 45

 46

 47

 48

 49

 50

 51

 52

 53

 54

 55

 56

 57

#! /bin/bash

# chkconfig: 345 10 90  

# description: Start and Stop redis   

PATH=/usr/local/bin:/sbin:/usr/bin:/bin   

# redis埠號

REDISPORT=6379  

# redis-server所在目錄的絕對路徑

EXEC=/home/java/redis/conf/redis-server   

# redis-cli所在目錄的絕對路徑

REDIS_CLI=/home/java/redis/conf/redis-cli   

#指定redis啟動之後pid檔案存放路徑,預設是這個路徑

PIDFILE=/home/java/redis/conf/redis_6379.pid  

# redis.conf所在目錄的絕對路徑

CONF="/home/java/redis/conf/redis.conf"  

#AUTH="password"  

case "$1" in   

        start)   

                if [ -f $PIDFILE ]   

                then   

                        echo "Process is already running or crashed."  

                else  

                        echo "Starting Redis server..."  

                        $EXEC $CONF  &

#$EXEC $CONF 後邊加一個&,表示讓redis作為後臺服務啟動,否則該服務會獨佔輸入屏。

                fi   

                if [ "$?"="0" ]   

                then   

                        echo "Redis is running..."  

                fi   

                ;;   

        stop)   

                if [ ! -f $PIDFILE ]   

                then   

                        echo "Process is not running."

echo "nothing todo."

                else  

                        PID=$(cat $PIDFILE)   

                        echo "Stopping..."  

                       $REDIS_CLI -p $REDISPORT  SHUTDOWN    

                        sleep 2  

                       while [ -x $PIDFILE ]   

                       do  

                                echo "Waiting for Redis to shutdown..."  

                               sleep 1  

                        done   

                        echo "Redis stopped"  

                fi   

                ;;   

        restart|force-reload)   

                ${0} stop   

                ${0} start   

                ;;   

        *)   

               echo "Usage: /etc/init.d/redis {start|stop|restart|force-reload}" >&2  

                exit 1  

esac

snippet_file_0.txt

先按下ESC退出編輯模式,然後輸入:wq 儲存並退出,:wq!

其中指令碼最開始的這個必須要加,不然沒法加入開機啟動,而且chkconfig一定要設定為345

如果設定為2345會出現服務redis不支援chkconfig現象。

#! /bin/bash# chkconfig: 345 10 90  

然後設定許可權

chmod755redis

chmod 755 設定使用者的許可權為:

1.檔案所有者可讀可寫可執行                                   --7

2.與檔案所有者同屬一個使用者組的其他使用者可讀可執行 --5 3.其它使用者組可讀可執行                                        --5

加入開機啟動

chkconfig redis on

重啟 reboot now

ps -ef | grep redis

[[email protected] ~]$ ps -ef | grep redis

root       748     1  0 19:15 ?        00:00:00 /usr/redis/redis-server *:6379

vigoss    2698  2007  0 19:16 pts/0    00:00:00 grep --color=auto redis

如果出現上面資訊,說明redis開機啟動設定成功。

以後啟動停止,重啟也可以使用如下命令,比較方便。

/etc/init.d/redis start

/etc/init.d/redis restart

/etc/init.d/redis stop

Redis伺服器設定密碼後,使用service redis stop 會出現以下資訊:

service redis stop

Stopping ...

OK

(error) NOAUTH Authentication required.

Waiting for Redis to shutdown ...

可以使用ps -ef | grep redis  查程序號 然後kill 掉,如果在deamon下還需要去刪除pid檔案,有點繁瑣。

解決辦法:

redis-cli 密碼登陸(redis-cli -a  password)就OK了。

再用ps -ef | grep redis 可以看到redis程序已經正常退出。

修改redis服務指令碼,加入如下所示的紅色授權資訊即可:

vi /etc/init.d/redis

$CLIEXEC -a "password" -p $REDISPORT shutdown(檔案第37行)

redis安裝就到這裡

檢視主從資訊

auth “password”

info replication

1、連線操作相關的命令

quit:關閉連線(connection

auth:簡單密碼認證

2、對value操作的命令

exists(key):確認一個key是否存在

del(key):刪除一個key

type(key):返回值的型別

keys(pattern):返回滿足給定pattern的所有key

randomkey:隨機返回key空間的一個key

rename(oldname, newname):將keyoldname重新命名為newname,若newname存在則刪除newname表示的key

dbsize:返回當前資料庫中key的數目

expire:設定一個key的活動時間(s

ttl:獲得一個key的活動時間

select(index):按索引查詢

move(key, dbindex):將當前資料庫中的key轉移到有dbindex索引的資料庫

flushdb:刪除當前選擇資料庫中的所有key

flushall:刪除所有資料庫中的所有key

3、對String操作的命令

set(key, value):給資料庫中名稱為keystring賦予值value

get(key):返回資料庫中名稱為keystringvalue

getset(key, value):給名稱為keystring賦予上一次的value

mget(key1, key2,…, key N):返回庫中多個string(它們的名稱為key1key2…)的value

setnx(key, value):如果不存在名稱為keystring,則向庫中新增string,名稱為key,值為value

setex(key, time, value):向庫中新增string(名稱為key,值為value)同時,設定過期時間time

mset(key1, value1, key2, value2,…key N, value N):同時給多個string賦值,名稱為key istring賦值value i

msetnx(key1, value1, key2, value2,…key N, value N):如果所有名稱為key istring都不存在,則向庫中新增string

名稱key i賦值為value i

incr(key):名稱為keystring1操作

incrby(key, integer):名稱為keystring增加integer

decr(key):名稱為keystring1操作

decrby(key, integer):名稱為keystring減少integer

append(key, value):名稱為keystring的值附加value

substr(key, start, end):返回名稱為keystringvalue的子串

4、對List操作的命令

rpush(key, value):在名稱為keylist尾新增一個值為value的元素

lpush(key, value):在名稱為keylist頭新增一個值為value的 元素

llen(key):返回名稱為keylist的長度

lrange(key, start, end):返回名稱為keyliststartend之間的元素(下標從0開始,下同)

ltrim(key, start, end):擷取名稱為keylist,保留startend之間的元素

lindex(key, index):返回名稱為keylistindex位置的元素

lset(key, index, value):給名稱為keylistindex位置的元素賦值為value

lrem(key, count, value):刪除count個名稱為keylist中值為value的元素。

count0,刪除所有值為value的元素,count>0從頭至尾刪除count個值為value的元素,count<0從尾到頭刪除|count|個值為value的元素。

lpop(key):返回並刪除名稱為keylist中的首元素 rpop(key):返回並刪除名稱為keylist中的尾元素

blpop(key1, key2,… key N, timeout)lpop命令的block版本。

即當timeout0時,若遇到名稱為key ilist不存在或該list為空,則命令結束。

如果timeout>0,則遇到上述情況時,等待timeout秒,如果問題沒有解決,則對keyi+1開始的list執行pop操作。

brpop(key1, key2,… key N, timeout)rpopblock版本。參考上一命令。

rpoplpush(srckey, dstkey):返回並刪除名稱為srckeylist的尾元素,並將該元素新增到名稱為dstkeylist的頭部

5、對Set操作的命令

sadd(key, member):向名稱為keyset中新增元素member

srem(key, member) :刪除名稱為keyset中的元素member

spop(key) :隨機返回並刪除名稱為keyset中一個元素

smove(srckey, dstkey, member) :將member元素從名稱為srckey的集合移到名稱為dstkey的集合

scard(key) :返回名稱為keyset的基數

sismember(key, member) 測試member是否是名稱為keyset的元素

sinter(key1, key2,…key N) :求交集

sinterstore(dstkey, key1, key2,…key N) :求交集並將交集儲存到dstkey的集合

sunion(key1, key2,…key N) :求並集

sunionstore(dstkey, key1, key2,…key N) :求並集並將並集儲存到dstkey的集合

sdiff(key1, key2,…key N) :求差集

sdiffstore(dstkey, key1, key2,…key N) :求差集並將差集儲存到dstkey的集合

smembers(key) :返回名稱為keyset的所有元素

srandmember(key) :隨機返回名稱為keyset的一個元素

6、對zsetsorted set)操作的命令

zadd(key, score, member):向名稱為keyzset中新增元素memberscore用於排序。如果該元素已經存在,則根據score更新該元素的順序。

zrem(key, member) :刪除名稱為keyzset中的元素member

zincrby(key, increment, member) :如果在名稱為keyzset中已經存在元素member,則該元素的score增加increment

否則向集合中新增該元素,其score的值為increment

zrank(key, member) :返回名稱為keyzset(元素已按score從小到大排序)中member元素的rank(即index,從0開始),

若沒有member元素,返回“nil”

zrevrank(key, member) :返回名稱為keyzset(元素已按score從大到小排序)中member元素的rank(即index,從0開始),

若沒有member元素,返回“nil”

zrange(key, start, end):返回名稱為keyzset(元素已按score從小到大排序)中的indexstartend的所有元素

zrevrange(key, start, end):返回名稱為keyzset(元素已按score從大到小排序)中的indexstartend的所有元素

zrangebyscore(key, min, max):返回名稱為keyzsetscore >= minscore <= max的所有元素

zcard(key):返回名稱為keyzset的基數 zscore(key, element):返回名稱為keyzset中元素element

score zremrangebyrank(key, min, max):刪除名稱為keyzsetrank >= minrank <= max的所有元素

zremrangebyscore(key, min, max) :刪除名稱為keyzsetscore >= minscore <= max的所有元素

zunionstore / zinterstore(dstkeyN, key1,…,keyN, WEIGHTS w1,…wN, AGGREGATE SUM|MIN|MAX):對Nzset求並集和交集,

並將最後的集合儲存在dstkeyN中。對於集合中每一個元素的score,在進行AGGREGATE運算前,都要乘以對於的WEIGHT引數。

如果沒有提供WEIGHT,預設為1。預設的AGGREGATESUM,即結果集合中元素的score是所有集合對應元素進行SUM運算的值,而MINMAX是指,

結果集合中元素的score是所有集合對應元素中最小值和最大值。

7、對Hash操作的命令

hset(key, field, value):向名稱為keyhash中新增元素field<—>value

hget(key, field):返回名稱為keyhashfield對應的value

hmget(key, field1, …,field N):返回名稱為keyhash