本篇內(nèi)容介紹了“redis3在linux安裝過(guò)程與基本操作”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
超過(guò)10多年行業(yè)經(jīng)驗(yàn),技術(shù)領(lǐng)先,服務(wù)至上的經(jīng)營(yíng)模式,全靠網(wǎng)絡(luò)和口碑獲得客戶,為自己降低成本,也就是為客戶降低成本。到目前業(yè)務(wù)范圍包括了:網(wǎng)站建設(shè)、做網(wǎng)站,成都網(wǎng)站推廣,成都網(wǎng)站優(yōu)化,整體網(wǎng)絡(luò)托管,微信小程序開(kāi)發(fā),微信開(kāi)發(fā),重慶App定制開(kāi)發(fā),同時(shí)也可以讓客戶的網(wǎng)站和網(wǎng)絡(luò)營(yíng)銷和我們一樣獲得訂單和生意!
<一>redis安裝過(guò)程
[root@hadoop0 opt]# tar -zxvf redis-3.0.5.tar.gz
[root@hadoop0 opt]# cd redis-3.0.5/
[root@hadoop0 redis-3.0.5]# ls -l
[root@hadoop0 redis-3.0.5]# make
[root@hadoop0 redis-3.0.5]# cd src/
[root@hadoop0 src]# make install
Hint: It's a good idea to run 'make test' ;)
INSTALL install
INSTALL in
[root@hadoop0 src]# cd /usr/local/
[root@hadoop0 local]# mkdir -p /usr/local/redis/bin
[root@hadoop0 local]# mkdir -p /usr/local/redis/etc
[root@hadoop0 local]# mv /opt/redis-3.0.5/redis.conf /usr/local/redis/etc/
[root@hadoop0 src]# mv redis-benchmark redis-check-aof redis-check-dump redis-cli redis-sentinel redis-server redis-trib.rb /usr/local/redis/bin/
[root@hadoop0 bin]# cd /usr/local/bin
[root@hadoop0 bin]# ./redis-server
(備注:產(chǎn)生警告,前臺(tái)啟動(dòng),若想后臺(tái)啟動(dòng),修改redis.conf配置文件:#daemonize yes YES作為守護(hù)進(jìn)程運(yùn)行,NO 反之)
5436:C 06 Nov 18:51:10.541 # Warning: no config file specified, using the default config. In order to specify a config file use ./redis-server /path/to/redis.conf
5436:M 06 Nov 18:51:10.542 * Increased maximum number of open files to 10032 (it was originally set to 1024).
5436:M 06 Nov 18:51:10.558 # Warning: 32 bit instance detected but no memory limit set. Setting 3 GB maxmemory limit with 'noeviction' policy now.
_._
_.-``__ ''-._
_.-`` `. `_. ''-._ Redis 3.0.5 (00000000/0) 32 bit
.-`` .-```. ```\/ _.,_ ''-._
( ' , .-` | `, ) Running in standalone mode
|`-._`-...-` __...-.``-._|'` _.-'| Port: 6379
| `-._ `._ / _.-' | PID: 5436
`-._ `-._ `-./ _.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' | http://redis.io
`-._ `-._`-.__.-'_.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' |
`-._ `-._`-.__.-'_.-' _.-'
`-._ `-.__.-' _.-'
`-._ _.-'
`-.__.-'
5436:M 06 Nov 18:51:10.562 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
5436:M 06 Nov 18:51:10.563 # Server started, Redis version 3.0.5
5436:M 06 Nov 18:51:10.565 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
5436:M 06 Nov 18:51:10.567 * The server is now ready to accept connections on port 6379
[root@hadoop0 bin]# ./redis-server ../etc/redis.conf
(備注:?jiǎn)?dòng)方式二,消除警告前臺(tái)啟動(dòng),若想后臺(tái)啟動(dòng),修改redis.conf:#daemonize yes YES作為守護(hù)進(jìn)程運(yùn)行,NO 反之)
5447:M 06 Nov 18:52:51.791 * Increased maximum number of open files to 10032 (it was originally set to 1024).
5447:M 06 Nov 18:52:51.792 # Warning: 32 bit instance detected but no memory limit set. Setting 3 GB maxmemory limit with 'noeviction' policy now.
_._
_.-``__ ''-._
_.-`` `. `_. ''-._ Redis 3.0.5 (00000000/0) 32 bit
.-`` .-```. ```\/ _.,_ ''-._
( ' , .-` | `, ) Running in standalone mode
|`-._`-...-` __...-.``-._|'` _.-'| Port: 6379
| `-._ `._ / _.-' | PID: 5447
`-._ `-._ `-./ _.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' | http://redis.io
`-._ `-._`-.__.-'_.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' |
`-._ `-._`-.__.-'_.-' _.-'
`-._ `-.__.-' _.-'
`-._ _.-'
`-.__.-'
<二> 配置文件說(shuō)明
配置redis.conf配置文件:
#是否作為守護(hù)進(jìn)程運(yùn)行
daemonize yes
#配置pid的存放路徑及文件名,默認(rèn)為當(dāng)前路徑下
pidfile redis.pid
#Redis默認(rèn)監(jiān)聽(tīng)端口
port 6379
#客戶端閑置多少秒后,斷開(kāi)連接
timeout 300
#日志顯示級(jí)別
loglevel verbose
#指定日志輸出的文件名,也可指定到標(biāo)準(zhǔn)輸出端口
logfile stdout
#設(shè)置數(shù)據(jù)庫(kù)的數(shù)量,默認(rèn)連接的數(shù)據(jù)庫(kù)是0,可以通過(guò)select N來(lái)連接不同的數(shù)據(jù)庫(kù)
databases 16
#保存數(shù)據(jù)到disk的策略
#當(dāng)有一條Keys數(shù)據(jù)被改變是,900秒刷新到disk一次
save 900 1
#當(dāng)有10條Keys數(shù)據(jù)被改變時(shí),300秒刷新到disk一次
save 300 10
#當(dāng)有1w條keys數(shù)據(jù)被改變時(shí),60秒刷新到disk一次
save 60 10000
#當(dāng)dump .rdb數(shù)據(jù)庫(kù)的時(shí)候是否壓縮數(shù)據(jù)對(duì)象
rdbcompression yes
#dump數(shù)據(jù)庫(kù)的數(shù)據(jù)保存的文件名
dbfilename dump.rdb
#Redis的工作目錄
dir /home/falcon/redis-2.0.0/
########### Replication #####################
#Redis的復(fù)制配置
# slaveof
# masterauth
############## SECURITY ###########
# requirepass foobared
############### LIMITS ##############
#最大客戶端連接數(shù)
# maxclients 128
#最大內(nèi)存使用率
# maxmemory
########## APPEND ONLY MODE #########
#是否開(kāi)啟日志功能
appendonly no
# 刷新日志到disk的規(guī)則
# appendfsync always
appendfsync everysec
# appendfsync no
################ VIRTUAL MEMORY ###########
#是否開(kāi)啟VM功能
vm-enabled no
# vm-enabled yes
vm-swap-file logs/redis.swap
vm-max-memory 0
vm-page-size 32
vm-pages 134217728
vm-max-threads 4
############# ADVANCED CONFIG ###############
glueoutputbuf yes
hash-max-zipmap-entries 64
hash-max-zipmap-value 512
#是否重置Hash表
activerehashing yes
<三>五朵金花:五大數(shù)據(jù)類型
redis值(value)可以是 字符串(String), 哈希(hashes), 列表(list), 集合(sets) 和 有序集合(sorted sets)
對(duì)value操作的命令
exists(key):確認(rèn)一個(gè)key是否存在
del(key):刪除一個(gè)key
type(key):返回值的類型
keys(pattern):返回滿足給定pattern的所有key
randomkey:隨機(jī)返回key空間的一個(gè)
keyrename(oldname, newname):重命名key
dbsize:返回當(dāng)前數(shù)據(jù)庫(kù)中key的數(shù)目
expire:設(shè)定一個(gè)key的活動(dòng)時(shí)間(s)
ttl:獲得一個(gè)key的活動(dòng)時(shí)間
select(index):按索引查詢
move(key, dbindex):移動(dòng)當(dāng)前數(shù)據(jù)庫(kù)中的key到dbindex數(shù)據(jù)庫(kù)
flushdb:刪除當(dāng)前選擇數(shù)據(jù)庫(kù)中的所有key
flushall:刪除所有數(shù)據(jù)庫(kù)中的所有key
對(duì)String操作的命令
set(key, value):給數(shù)據(jù)庫(kù)中名稱為key的string賦予值value
get(key):返回?cái)?shù)據(jù)庫(kù)中名稱為key的string的value
getset(key, value):給名稱為key的string賦予上一次的value
mget(key1, key2,…, key N):返回庫(kù)中多個(gè)string的value
setnx(key, value):添加string,名稱為key,值為value
setex(key, time, value):向庫(kù)中添加string,設(shè)定過(guò)期時(shí)間time
mset(key N, value N):批量設(shè)置多個(gè)string的值
msetnx(key N, value N):如果所有名稱為key i的string都不存在
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的子串
對(duì)List操作的命令
rpush(key, value):在名稱為key的list尾添加一個(gè)值為value的元素
lpush(key, value):在名稱為key的list頭添加一個(gè)值為value的 元素
llen(key):返回名稱為key的list的長(zhǎng)度
lrange(key, start, end):返回名稱為key的list中start至end之間的元素
ltrim(key, start, end):截取名稱為key的list
lindex(key, index):返回名稱為key的list中index位置的元素
lset(key, index, value):給名稱為key的list中index位置的元素賦值
lrem(key, count, value):刪除count個(gè)key的list中值為value的元素
lpop(key):返回并刪除名稱為key的list中的首元素
rpop(key):返回并刪除名稱為key的list中的尾元素
blpop(key1, key2,… key N, timeout):lpop命令的block版本。
brpop(key1, key2,… key N, timeout):rpop的block版本。
rpoplpush(srckey, dstkey):返回并刪除名稱為srckey的list的尾元素,并將該元素添加到名稱為dstkey的list的頭部
對(duì)Set操作的命令
sadd(key, member):向名稱為key的set中添加元素member
srem(key, member) :刪除名稱為key的set中的元素member
spop(key) :隨機(jī)返回并刪除名稱為key的set中一個(gè)元素
smove(srckey, dstkey, member) :移到集合元素
scard(key) :返回名稱為key的set的基數(shù)
sismember(key, member) :member是否是名稱為key的set的元素
sinter(key1, key2,…key N) :求交集
sinterstore(dstkey, (keys)) :求交集并將交集保存到dstkey的集合
sunion(key1, (keys)) :求并集
sunionstore(dstkey, (keys)) :求并集并將并集保存到dstkey的集合
sdiff(key1, (keys)) :求差集
sdiffstore(dstkey, (keys)) :求差集并將差集保存到dstkey的集合
smembers(key) :返回名稱為key的set的所有元素
srandmember(key) :隨機(jī)返回名稱為key的set的一個(gè)元素
對(duì)Hash操作的命令
hset(key, field, value):向名稱為key的hash中添加元素field
hget(key, field):返回名稱為key的hash中field對(duì)應(yīng)的value
hmget(key, (fields)):返回名稱為key的hash中field i對(duì)應(yīng)的value
hmset(key, (fields)):向名稱為key的hash中添加元素field
hincrby(key, field, integer):將名稱為key的hash中field的value增加integer
hexists(key, field):名稱為key的hash中是否存在鍵為field的域
hdel(key, field):刪除名稱為key的hash中鍵為field的域
hlen(key):返回名稱為key的hash中元素個(gè)數(shù)
hkeys(key):返回名稱為key的hash中所有鍵
hvals(key):返回名稱為key的hash中所有鍵對(duì)應(yīng)的value
hgetall(key):返回名稱為key的hash中所有的鍵(field)及其對(duì)應(yīng)的value
小示例:
#在Shell命令行下啟動(dòng)Redis客戶端工具。
命令行連接參數(shù)
redis-cli參數(shù)
Usage: redis-cli [OPTIONS] [cmd [arg [arg ...]]]
-h
-p
-s
-a
-r
-i
It is possible to specify sub-second times like -i 0.1
-n
-x Read last argument from STDIN
-d
-c Enable cluster mode (follow -ASK and -MOVED redirections)
--raw Use raw formatting for replies (default when STDOUT is not a tty)
--latency Enter a special mode continuously sampling latency
--slave Simulate a slave showing commands received from the master
--pipe Transfer raw Redis protocol from stdin to server
--bigkeys Sample Redis keys looking for big keys
--eval
--help Output this help and exit
--version Output version and exit
/> redis-cli
#清空當(dāng)前選擇的數(shù)據(jù)庫(kù),以便于對(duì)后面示例的理解。
redis 127.0.0.1:6379> flushdb
OK
#添加String類型的模擬數(shù)據(jù)。
redis 127.0.0.1:6379> set mykey 2
OK
redis 127.0.0.1:6379> set mykey2 "hello"
OK
#添加Set類型的模擬數(shù)據(jù)。
redis 127.0.0.1:6379> sadd mysetkey 1 2 3
(integer) 3
#添加Hash類型的模擬數(shù)據(jù)。
redis 127.0.0.1:6379> hset mmtest username "stephen"
(integer) 1
#根據(jù)參數(shù)中的模式,獲取當(dāng)前數(shù)據(jù)庫(kù)中符合該模式的所有key,從輸出可以看出,該命令在執(zhí)行時(shí)并不區(qū)分與Key關(guān)聯(lián)的Value類型。
redis 127.0.0.1:6379> keys my*
1) "mysetkey"
2) "mykey"
3) "mykey2"
#刪除了兩個(gè)Keys。
redis 127.0.0.1:6379> del mykey mykey2
(integer) 2
#查看一下剛剛刪除的Key是否還存在,從返回結(jié)果看,mykey確實(shí)已經(jīng)刪除了。
redis 127.0.0.1:6379> exists mykey
(integer) 0
#查看一下沒(méi)有刪除的Key,以和上面的命令結(jié)果進(jìn)行比較。
redis 127.0.0.1:6379> exists mysetkey
(integer) 1
#將當(dāng)前數(shù)據(jù)庫(kù)中的mysetkey鍵移入到ID為1的數(shù)據(jù)庫(kù)中,從結(jié)果可以看出已經(jīng)移動(dòng)成功。
redis 127.0.0.1:6379> move mysetkey 1
(integer) 1
#打開(kāi)ID為1的數(shù)據(jù)庫(kù)。
redis 127.0.0.1:6379> select 1
OK
#查看一下剛剛移動(dòng)過(guò)來(lái)的Key是否存在,從返回結(jié)果看已經(jīng)存在了。
redis 127.0.0.1:6379[1]> exists mysetkey
(integer) 1
#在重新打開(kāi)ID為0的缺省數(shù)據(jù)庫(kù)。
redis 127.0.0.1:6379[1]> select 0
OK
#查看一下剛剛移走的Key是否已經(jīng)不存在,從返回結(jié)果看已經(jīng)移走。
redis 127.0.0.1:6379> exists mysetkey
(integer) 0
#準(zhǔn)備新的測(cè)試數(shù)據(jù)。
redis 127.0.0.1:6379> set mykey "hello"
OK
#將mykey改名為mykey1
redis 127.0.0.1:6379> rename mykey mykey1
OK
#由于mykey已經(jīng)被重新命名,再次獲取將返回nil。
redis 127.0.0.1:6379> get mykey
(nil)
#通過(guò)新的鍵名獲取。
redis 127.0.0.1:6379> get mykey1
"hello"
#由于mykey已經(jīng)不存在了,所以返回錯(cuò)誤信息。
redis 127.0.0.1:6379> rename mykey mykey1
(error) ERR no such key
#為renamenx準(zhǔn)備測(cè)試key
redis 127.0.0.1:6379> set oldkey "hello"
OK
redis 127.0.0.1:6379> set newkey "world"
OK
#由于newkey已經(jīng)存在,因此該命令未能成功執(zhí)行。
redis 127.0.0.1:6379> renamenx oldkey newkey
(integer) 0
#查看newkey的值,發(fā)現(xiàn)它也沒(méi)有被renamenx覆蓋。
redis 127.0.0.1:6379> get newkey
"world"
#為后面的示例準(zhǔn)備的測(cè)試數(shù)據(jù)。
redis 127.0.0.1:6379> set mykey "hello"
OK
#將該鍵的超時(shí)設(shè)置為100秒。
redis 127.0.0.1:6379> expire mykey 100
(integer) 1
#通過(guò)ttl命令查看一下還剩下多少秒。
redis 127.0.0.1:6379> ttl mykey
(integer) 97
#立刻執(zhí)行persist命令,該存在超時(shí)的鍵變成持久化的鍵,即將該Key的超時(shí)去掉。
redis 127.0.0.1:6379> persist mykey
(integer) 1
#ttl的返回值告訴我們,該鍵已經(jīng)沒(méi)有超時(shí)了。
redis 127.0.0.1:6379> ttl mykey
(integer) -1
#為后面的expire命令準(zhǔn)備數(shù)據(jù)。
redis 127.0.0.1:6379> del mykey
(integer) 1
redis 127.0.0.1:6379> set mykey "hello"
OK
#設(shè)置該鍵的超時(shí)被100秒。
redis 127.0.0.1:6379> expire mykey 100
(integer) 1
“redis3在linux安裝過(guò)程與基本操作”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!