走近Redis(一)——Redis安裝及基本key操作

Redis 是一款開源的NoSQL key-value 存儲系統。Redis 常常和MemCache 一起提到,但與 MemCache 相比,Redis 是一種數據庫,可以對數據持久化,同時, Redis 數據結構比較豐富——string hash list set sorted set

1.安裝與啓動 Redis

[root@localhost ~]# cd /usr/local/src
[root@localhost src]# wget http://download.redis.io/releases/redis-3.0.0.tar.gz
[root@localhost src]# tar -zxf redis-3.0.0.tar.gz

與編譯安裝大多數其他軟件不同的是,Redis 已經做過 ./configure,因此直接 make&& make install 即可:

[root@localhost src]# cd redis-3.0.0
[root@localhost redis-3.0.0]# make
zmalloc.h:50:31:error: jemalloc/jemalloc.h: No such file or directory
zmalloc.h:55:2:error: #error "Newer version of jemalloc required"
make[1]: ***[adlist.o] Error 1

通過報錯信息不難發現,jemalloc版本過低,用 yum 命令安裝:

[root@localhost redis-3.0.0]# yum install -y jemalloc-devel
[root@localhost redis-3.0.0]# make
cc:../deps/hiredis/libhiredis.a: No such file or directory
cc:../deps/lua/src/liblua.a: No such file or directory
cc:../deps/jemalloc/lib/libjemalloc.a: No such file or directory
make[1]: ***[redis-server] Error 1
[root@localhost redis-3.0.0]# yum install -y hiredis-devel
[root@localhost redis-3.0.0]# yum install -y lua-devel

安裝完這些庫以後,如果在 pwd 目錄下仍然報相同的 No such file or directory 錯誤,可以通過再次解壓 Redis 源碼包重新編譯來解決:

[root@localhost src]# tar -zxf redis-3.0.0.tar.gz -C /usr/local/
[root@localhost src]# cd /usr/local/redis-3.0.0
[root@localhost redis-3.0.0]# make
Hint: It's agood idea to run 'make test' ;)
make[1]: Leavingdirectory `/usr/local/redis-3.0.0/src'

出現以上信息表示編譯安裝已經成功,此時我們需要用的二進制文件位於 /usr/local/redis-3.0.0/src/ 下,分別是:

1redis-benchmark —— 用於 Redis 性能測試

2redis-check-aof —— 用於檢查 aof 日誌的工具

3redis-check-dump —— 用於檢查 rbd 日誌的工具

4redis-server —— Redis 服務器進程

5redis-cli —— Redis 客戶端進程

6redis-sentinel —— 軟鏈接文件,軟鏈接到 redis-server

當然,爲了方便,我們也可以將這些二進制文件單獨安裝到其他目錄(這裏的 PREFIX 需要使用大寫):

[root@localhost redis-3.0.0]# make install PREFIX=/usr/local/redis
[root@localhost redis]# ls /usr/local/redis/bin/
redis-benchmark  redis-check-dump  redis-sentinel
redis-check-aof  redis-cli         redis-server

這樣我們所有可用的二進制文件都被移動到指定的目錄下了。同樣爲了方便配置,拷貝一份 Redis 配置文件到安裝目錄:

[root@localhost redis]# cp /usr/local/redis-3.0.0/redis.conf ./

這樣一來,我們就可以通過如下命令啓動 Redis Server 了,後面的 ./redis.conf 指定該 Redis Server 使用的是當前目錄下的 redis.conf 配置文件:

[root@localhost redis]# bin/redis-server ./redis.conf

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/6C/3F/wKioL1VCTLmRHfOmAAHumJzWmUA081.jpg" title="redis.png" alt="wKioL1VCTLmRHfOmAAHumJzWmUA081.jpg" />

-1 Redis啓動成功頁面

如果命令運行後如圖 1 所示,表示啓動成功。Redis 的默認端口是 6379。此時,新打開一個 shell,使用如下命令使用 Redis 客戶端連接 Redis服務器:

[root@localhost ~]# /usr/local/redis/redis-cli -h 127.0.0.1 -p 6379

其中,-h 指定 Redis 服務器 ip -p 指定 Redis 服務器端口。如果沒有明確指定,則連接 127.0.0.1:6379 。命令執行後,出現如下一行內容則表示連接成功:

127.0.0.1:6379>

如果想要關閉 Redis 服務器,使用如下命令:

[root@localhost ~]# /usr/local/redis/bin/redis-cli -h 127.0.0.1 -p6379 shutdown

 

2.Redis 操作key

Redis Client 命令行中使用如下命令對 key 進行操作:

1增、查 key-value

127.0.0.1:6379> set name Lucy
OK
127.0.0.1:6379> get name
"Lucy"
127.0.0.1:6379> set sex female
127.0.0.1:6379> set job nurse
127.0.0.1:6379> keys * //三種正則匹配符號可以使用,* ? []
1) "job"
2) "sex"
3) "name"
127.0.0.1:6379> keys n?me
1) "name"
127.0.0.1:6379> keys j[abco]b
1) "job"

   2刪除 key

127.0.0.1:6379> del job
(integer) 1  //返回1表示操作成功,返回0表示操作失敗

3修改 key

127.0.0.1:6379> set sex male
OK
127.0.0.1:6379> rename sex personsex  //不管之前是否存在personsex,重命名都會成功
OK
127.0.0.1:6379> renamenx personsex name  //renamenx = rename if new name does notexist,即不會發生覆蓋原有key-value的情況
(integer) 0  //返回1表示操作成功,返回0表示操作失敗
127.0.0.1:6379> renamenx sex personsex
(integer) 1  //返回1表示操作成功,返回0表示操作失敗

4移動 key

Redis 默認有 16 個存儲空間,可以簡單理解爲 16 張表,編號 0 - 16。默認情況下,所有key-value 位於 0 表下,可以使用 move命令將其移動到指定編號的表中, select 命令用於選擇指定編號的表:

127.0.0.1:6379> move name 1
(integer) 1
127.0.0.1:6379> keys *
1) "sex"
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> keys *
1) "name"

5返回隨機 key

127.0.0.1:6379> randomkey
"name"
127.0.0.1:6379> randomkey
"name"
127.0.0.1:6379> randomkey
"sex"

6相應 key 是否存在:

127.0.0.1:6379> exists name
(integer) 1  //返回1表示存在,返回0表示不存在
127.0.0.1:6379> exists person
(integer) 0  //返回1表示存在,返回0表示不存在

7判斷 key 的類型:

127.0.0.1:6379> type name
string
127.0.0.1:6379> type job
none

可能的類型爲string list set order set hash ,如果 key 不存在,則返回 none

8查詢 key 聲明週期,以秒爲單位:

127.0.0.1:6379> ttl name
(integer) -1 //返回-1表示永久有效,返回-2表示key不存在,返回n則表示n秒後過期
127.0.0.1:6379> ttl person
(integer) -2

若要以毫秒爲單位使用,使用 pttl 命令。

9設置 key 聲明週期,以秒爲單位:

127.0.0.1:6379> expire name 20
(integer) 1
127.0.0.1:6379> ttl name
(integer) 12

若要以毫秒爲單位使用,使用 pttl 命令。

10使 key 永久生效:

127.0.0.1:6379> expire name 20
(integer) 1
127.0.0.1:6379> persist name
(integer) 1
127.0.0.1:6379> ttl name
(integer) -1


本文出自 “細桶假狗屎” 博客,請務必保留此出處http://xitongjiagoushi.blog.51cto.com/9975742/1641138

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章