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
裡面的具體程式碼如下:
#! /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):將key由oldname重新命名為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):給資料庫中名稱為key的string賦予值value
get(key):返回資料庫中名稱為key的string的value
getset(key, value):給名稱為key的string賦予上一次的value
mget(key1, key2,…, key N):返回庫中多個string(它們的名稱為key1,key2…)的value
setnx(key, value):如果不存在名稱為key的string,則向庫中新增string,名稱為key,值為value
setex(key, time, value):向庫中新增string(名稱為key,值為value)同時,設定過期時間time
mset(key1, value1, key2, value2,…key N, value N):同時給多個string賦值,名稱為key i的string賦值value i
msetnx(key1, value1, key2, value2,…key N, value N):如果所有名稱為key i的string都不存在,則向庫中新增string,
名稱key i賦值為value i
incr(key):名稱為key的string增1操作
incrby(key, integer):名稱為key的string增加integer
decr(key):名稱為key的string減1操作
decrby(key, integer):名稱為key的string減少integer
append(key, value):名稱為key的string的值附加value
substr(key, start, end):返回名稱為key的string的value的子串
4、對List操作的命令
rpush(key, value):在名稱為key的list尾新增一個值為value的元素
lpush(key, value):在名稱為key的list頭新增一個值為value的 元素
llen(key):返回名稱為key的list的長度
lrange(key, start, end):返回名稱為key的list中start至end之間的元素(下標從0開始,下同)
ltrim(key, start, end):擷取名稱為key的list,保留start至end之間的元素
lindex(key, index):返回名稱為key的list中index位置的元素
lset(key, index, value):給名稱為key的list中index位置的元素賦值為value
lrem(key, count, value):刪除count個名稱為key的list中值為value的元素。
count為0,刪除所有值為value的元素,count>0從頭至尾刪除count個值為value的元素,count<0從尾到頭刪除|count|個值為value的元素。
lpop(key):返回並刪除名稱為key的list中的首元素 rpop(key):返回並刪除名稱為key的list中的尾元素
blpop(key1, key2,… key N, timeout):lpop命令的block版本。
即當timeout為0時,若遇到名稱為key i的list不存在或該list為空,則命令結束。
如果timeout>0,則遇到上述情況時,等待timeout秒,如果問題沒有解決,則對keyi+1開始的list執行pop操作。
brpop(key1, key2,… key N, timeout):rpop的block版本。參考上一命令。
rpoplpush(srckey, dstkey):返回並刪除名稱為srckey的list的尾元素,並將該元素新增到名稱為dstkey的list的頭部
5、對Set操作的命令
sadd(key, member):向名稱為key的set中新增元素member
srem(key, member) :刪除名稱為key的set中的元素member
spop(key) :隨機返回並刪除名稱為key的set中一個元素
smove(srckey, dstkey, member) :將member元素從名稱為srckey的集合移到名稱為dstkey的集合
scard(key) :返回名稱為key的set的基數
sismember(key, member) :測試member是否是名稱為key的set的元素
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) :返回名稱為key的set的所有元素
srandmember(key) :隨機返回名稱為key的set的一個元素
6、對zset(sorted set)操作的命令
zadd(key, score, member):向名稱為key的zset中新增元素member,score用於排序。如果該元素已經存在,則根據score更新該元素的順序。
zrem(key, member) :刪除名稱為key的zset中的元素member
zincrby(key, increment, member) :如果在名稱為key的zset中已經存在元素member,則該元素的score增加increment;
否則向集合中新增該元素,其score的值為increment
zrank(key, member) :返回名稱為key的zset(元素已按score從小到大排序)中member元素的rank(即index,從0開始),
若沒有member元素,返回“nil”
zrevrank(key, member) :返回名稱為key的zset(元素已按score從大到小排序)中member元素的rank(即index,從0開始),
若沒有member元素,返回“nil”
zrange(key, start, end):返回名稱為key的zset(元素已按score從小到大排序)中的index從start到end的所有元素
zrevrange(key, start, end):返回名稱為key的zset(元素已按score從大到小排序)中的index從start到end的所有元素
zrangebyscore(key, min, max):返回名稱為key的zset中score >= min且score <= max的所有元素
zcard(key):返回名稱為key的zset的基數 zscore(key, element):返回名稱為key的zset中元素element的
score zremrangebyrank(key, min, max):刪除名稱為key的zset中rank >= min且rank <= max的所有元素
zremrangebyscore(key, min, max) :刪除名稱為key的zset中score >= min且score <= max的所有元素
zunionstore / zinterstore(dstkeyN, key1,…,keyN, WEIGHTS w1,…wN, AGGREGATE SUM|MIN|MAX):對N個zset求並集和交集,
並將最後的集合儲存在dstkeyN中。對於集合中每一個元素的score,在進行AGGREGATE運算前,都要乘以對於的WEIGHT引數。
如果沒有提供WEIGHT,預設為1。預設的AGGREGATE是SUM,即結果集合中元素的score是所有集合對應元素進行SUM運算的值,而MIN和MAX是指,
結果集合中元素的score是所有集合對應元素中最小值和最大值。
7、對Hash操作的命令
hset(key, field, value):向名稱為key的hash中新增元素field<—>value
hget(key, field):返回名稱為key的hash中field對應的value
hmget(key, field1, …,field N):返回名稱為key的hash中