redis安裝和命令使用


前言:
redis是一個key-value的存儲系統,value支持string、list、set、zset、hash五種類型,且支持數據的本地存儲  

一、安裝redis

1、linux下安裝redis
前提:linux下需要安裝了make、gcc、tcl 8.5。
 
下載地址:http://download.redis.io/releases/redis-3.0.6.tar.gz
進入要安裝的位置,直接下載下來就,然后解壓,進行編譯即可。(我是在/opt下新建了一個目錄redis,然后下載到這個目錄里)
 
下載命令:wget http://download.redis.io/releases/redis-3.0.6.tar.gz
解壓命令:tar -zxvf redis-3.0.6.tar.gz
 
具體命令如下:
cd /opt
mkdir redis
cd redis 
wget http://download.redis.io/releases/redis-3.0.6.tar.gz
tar -zxvf redis-3.0.6.tar.gz
cd redis-3.0.6
make
cd src
make install
 
如果遇到沒有安裝gcc或者tcl8.5的問題,可以參照下面兩篇博客,注:我用的是Ubuntu系統
 
2、mac下安裝redis
brew install redis
 
查看redis所在目錄:brew list redis
 

二、redis結構,配置redis

1.redis結構,redis的可執行文件有如下四個:
redis-server:redis服務器的daemon啟動程序,默認在前台啟動
redis-cli:redis命令行操作工具
redis-benchmark:redis性能測試工具
redis-stat:redis狀態監測工具(這個我裝的默認不帶這個工具,需要自己去單獨安裝)
 
2.redis啟動
2.1啟動redis-server (默認daemonize為no ,會在前台執行,可更改redis.conf文件來修改配置)
redis-server
 
2.2啟動redis-cli,啟動成功后可以進行命令行操作了
redis-cli
 
說明:redis-server默認是在前台啟動的,是根據配置文件redis.conf中的配置進行啟動的,這是要啟動redis-cli就需要再開一個終端進行操作,所以可以修改redis.conf的daemonize為yes
 
3.redis.conf配置文件
1.redis.conf文件位置
安裝redis的目錄下
2.redis.conf的主要配置項
  • daemonize:是否以后台daemon方式運行
  • pidfile:pid文件位置
  • port:監聽的端口號
  • timeout:請求超時時間
  • loglevel:log信息級別
  • logfile:log文件位置
  • databases:開啟數據庫的數量
  • save * *:保存快照的頻率,第一個*表示多長時間,第三個*表示執行多少次寫操作。在一定時間內執行一定數量的寫操作時,自動保存快照。可設置多個條件。
  • rdbcompression:是否使用壓縮
  • dbfilename:數據快照文件名(只是文件名,不包括目錄)
  • dir:數據快照的保存目錄(這個是目錄)
  • appendonly:是否開啟appendonlylog,開啟的話每次寫操作會記一條log,這會提高數據抗風險能力,但影響效率。
  • appendfsync:appendonlylog如何同步到磁盤(三個選項,分別是每次寫都強制調用fsync、每秒啟用一次fsync、不調用fsync等待系統自己同步)
將daemonize參數改為yes,這樣就可以在后台運行server,而不用再開一個終端去執行./redis-cli了
修改配置文件后的server啟動命令:./redis-server ../redis.conf
說明:./redis-server(進入src目錄,執行當前目錄下的redis-server),然后使用上一目錄下的redis.confi配置文件啟動
也可以設置啟動腳本去啟動redis,這個可以自行去百度
 

三、redis.cli命令

啟動redis-server后,才可以啟動redis-cli
啟動命令:redis-cli 
 
針對redis的命令:
(redis可以有多個數據庫,每個數據庫有索引編號,從0開始)
命令 意義
keys * 查看redis下所有的key(*可以是一個正則表達式)
exists key redis下是否存在key
type key 獲得key的value的類型(string等)
del key 刪除key
rename oldkey newkey 將oldkey更名為newkey(如果newkey存在,則先將newkey刪除)
dbsize 返回redis下key的數量
select index 切換數據庫(默認是0,如果切換1等后面會多一個【1】的標識)
move key index 將當前數據庫下的key移動到索引為index的數據庫下
flushdb 刪除當前數據庫中的所有key
flushall 刪除所有數據庫中的key
 
string類型的操作:
如果想刪除string類型的,就直接刪除key就可以了
操作 命令 例子 例子結果
增加或更改key,value set key value set key1 value1 key1的值是value1
獲得key的值 get key get key1 value1
批量返回多個key的value mget key1 key2 同命令 獲得key1和key2的值
批量給多個key復制 mset key1 value1 key2 value2 同命令 分別賦給key1、key2的value為value1、value2
給為數值的value+1 incr key key為1時,使用左側命令 2
給為數值的value增加n(n為數字) incrby key n key為2時,incry key 2 4
給為數值的value-1 decr key key為2時,使用左側命令 1
給為數值的value減去n(n為數字) decrby key n key為4時,decrby key 2 2
在string的value后追加內容 append key value key為abc時,append key de key的value變為abcde
獲得value的子串 substr key start end key為1234567,substr key 1 3 獲得key的子串234(子串索引從0開始計算)
 
list類型的操作:
(list的索引是從0開始計算的)list底層用的是鏈表
操作 命令 例子 例子結果
向list型的value尾部增加一個值 rpush key value1 value2 rpush key1 abc key1的尾部增加了一個子項“abc”
向list型的value頭部增加一個值 lpush key value1 value2 lpush key1 123 key1的頭部增加了一個子項“123”
查詢list的長度 llen key key1有3個子項,llen key1 3
查詢key的值 lrange key start end key有3個子項“123”,“abc”,“cde”
lrange key 0 -1
將全部子項都查詢出來了,也可以用0 2的區間等查詢部分結果
截取key的值,保留部分區間的值(索引) ltrim key start end ltrim key 0 1 只保留了key的0位和1位的值,截取了
獲得某個索引位置的值 lindex key index lindex key 1 獲得了索引為1位置的值
修改某索引位置的值 lset key index value lset key 1 abcdef 將索引為1位置的值替換成了“abcdef”
刪除key下的某一個value lrem key count value lrem key 1 value 刪除count個值為value的數據,如果count為0,則所有為value的數據都刪除
刪除list值中的首元素 lpop key 同命令 第一個元素被刪除
刪除list值中的尾元素 rpop key 同命令 最后一個元素被刪除
刪除key1中的尾元素,並插到key2中頭部 rpoplpush key1 key2 同命令 key1的尾元素被刪除,並添加到了key2的頭元素位置
 
 
set類型的操作:
是一種集合,是無序的集合,沒有先后順序,可以進行交集、並集、差集等操作,set類型的元素不會出現重復元素,元素唯一。
操作 命令 例子 例子結果
增加或更改set的key,value sadd key value1 value2  sadd key1 1 2 3 key1的值是1,2,3(可以寫多個值)
返回set的所有元素 smembers key 同命令 返回key為key的所有元素
查詢set下是否存在某一個元素 sismember key member sismember key1 5 查詢key1下是否有5(返回的是1和0,1表示存在)
刪除set中的一個member srem key member srem key1 5 刪除key1下為5的元素
隨機刪除set下的一個元素,並返回這個值 spop key 同命令 隨機刪除key下的一個元素
返回key下的元素個數 scard key 同命令 返回key為key的元素個數
從一個set下把某一元素移動到另一set下 smove key2 key3 member 同命令 將key2下的member移動到key3下
求多個set的交集 sinter key1 key2 同命令 顯示key1和key2下的交集
將多個set的交集存儲到一個set下 sinterstore key3 key1 key2 同命令 求key1和key2的交集並存儲到key3下
求多個set的並集 sunion key1 key2 同命令 顯示key1和key2的並集
將多個set的並集存儲到一個set下 sunionstore key3 key1 key2 同命令 求key1和key2的並集並存儲到key3下
求多個set的差集 sdiff key1 key2 同命令 顯示key1和key2的差集
求多個set的差集存儲到一個set下 sdiffstore key3 key1 key2 同命令 求key1和key2的差集並存儲到key3下
隨機返回set下的一個元素 srandmember key 同命令 隨機返回key下的一個元素
 
zset類型的操作:
有序集合,每個元素都關聯一個序號,元素去重。zset的命令都是以z開頭的。zset的value由score(序號)和值兩部分組成
操作 命令 例子 例子結果
增加zset的key和value zadd key score member zadd key 1 abc 增加key下的序號為1的值為abc
返回zset下某一member的index
(元素按score從小到大排序)
zrank key member zrank key abc 返回元素名為abc的索引(索引是從0開始計算的,所以比自己加的score少1)
返回zset下某一member的index
(元素按score從大到小排序)
zrevrank key member zrevrank key abc 返回元素名為abc的索引(索引是從0開始計算的,所以比自己加的score少1)
返回zset下某一區間的值
(元素按score從小到大排序0
zrange key start end zset key 0 -1 返回zset下區間start到end的值(0 -1是全部)
元素從小到大排序
返回zset下某一區間的值
(元素按score從小到大排序)
zrevrange key start end zset key 0 -1 返回zset下區間start到end的值(0 -1是全部)
元素從小到大排序
刪除zset下的某一個member zrem key member 同命令 刪除key下的member
返回zset某一元素的score zscore key member 同命令 返回key下元素member的score
返回zset某一score區間的元素 zrangebyscore key start end zrangebyscore key 1 4 返回key下的score為1到4的元素
刪除zset某一score區間的元素 zremrangebyscore key start end zremrangebyscore key 1 2 刪除key下score區間為1到2的元素
 
zset還支持並集、交集、差集的計算,會根據最后的aggregate來決定score是sum還是min或max
 
hash類型的操作
hash就是哈希,可以理解為map,一個key對value的類型。hash類型的數據組成key:{field:value}
hash的命令都是以h開頭的,后面跟着redis的key,再后面的參數與string類型的操作類似,可以將hash的field想象成string的key。
操作 命令 例子 例子結果
hash插入數據 hset key field value hset key1 age 20 在key1下增加了一個age:20的hash值
獲得hash中某一個field對應的value值 hget key field hget key age 獲得key下的age的值
批量獲得hash的多個field對應的值 hmget key field1 field2  hmget key name age 批量獲得key下的name和age的值
hash批量插入數據 hmset key field1 value1 field2 value2 hmset key name tom age 20 批量插入key的value,name:tom age:20
查看hash的某一個key下是否存在field hexists key field hexists key name 查看key下是否存在field叫做name的項
返回hash的元素個數 hlen key 同命令 返回key的元素個數
根據field,刪除hash的某一個元素 hdel key field 同命令 刪除key下鍵為field的元素
顯示hash中所有的鍵及對應的值 hgetall key 同命令 顯示key下所有的鍵及對應的值(但是是分行顯示的)
返回hash的所有元素的鍵 hkeys key 同命令 返回key下的所有元素的鍵(field)
顯示hash中所有鍵對應的值 hvals key 同命令 返回key下的所有鍵對應的值,不包含鍵
將hash下某一鍵的值增加一定數值 hincrby key field integer hincrby key field 10 將key的field的值增加10(如果值是數值會直接加10;
如果不是數值,該鍵的值會直接變為100
 
 
其他:redis還有很多其他的命令,如果有需要可以再去百度一下。redis還支持持久化的本地存儲,和主從的搭建等。這些以后我有時間了會再補充一下。這篇就先暫時寫到這里了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM