溫馨提示×

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

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

redis3在linux安裝過(guò)程與基本操作

發(fā)布時(shí)間:2021-08-12 10:57:26 來(lái)源:億速云 閱讀:285 作者:chen 欄目:云計(jì)算

本篇內(nèi)容介紹了“redis3在linux安裝過(guò)程與基本操作”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!



<一>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 <masterip> <masterport>
# masterauth <master-password>

############## SECURITY ###########
# requirepass foobared

############### LIMITS ##############
#最大客戶端連接數(shù)
# maxclients 128
#最大內(nèi)存使用率
# maxmemory <bytes>

########## 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ù)類(lèi)型    
redis值(value)可以是 字符串(String), 哈希(hashes), 列表(list), 集合(sets) 和 有序集合(sorted sets)
對(duì)value操作的命令

exists(key):確認(rèn)一個(gè)key是否存在
del(key):刪除一個(gè)key
type(key):返回值的類(lèi)型
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 <hostname>    Server hostname (default: 127.0.0.1)
  -p <port>        Server port (default: 6379)
  -s <socket>      Server socket (overrides hostname and port)
  -a <password>    Password to use when connecting to the server
  -r <repeat>      Execute specified command N times
  -i <interval>    When -r is used, waits <interval> seconds per command.
                   It is possible to specify sub-second times like -i 0.1
  -n <db>          Database number
  -x               Read last argument from STDIN
  -d <delimiter>   Multi-bulk delimiter in for raw formatting (default: \n)
  -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 <file>    Send an EVAL command using the Lua script at <file>
  --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類(lèi)型的模擬數(shù)據(jù)。
    redis 127.0.0.1:6379> set mykey 2
    OK
    redis 127.0.0.1:6379> set mykey2 "hello"
    OK
    #添加Set類(lèi)型的模擬數(shù)據(jù)。
    redis 127.0.0.1:6379> sadd mysetkey 1 2 3
    (integer) 3
    #添加Hash類(lèi)型的模擬數(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類(lèi)型。
    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)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向AI問(wèn)一下細(xì)節(jié)

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

AI