1. 程式人生 > >Redis安裝及使用詳解

Redis安裝及使用詳解

local 元素 sin 關註 什麽 c-c 列表 其他 sdi

推薦在Linux系統上安裝,這裏我采用CentOS6:

Redis采用3.0.0版本,官網下載即可

由於Redis是C語言編寫,需要安裝gcc(部分Linux自帶gcc)

yum install gcc-c++

解壓安裝包:

tar -zxvf redis-3.0.0.tar.gz

編譯redis源碼:

cd redis-3.0.0
make

安裝:

make install PREFIX=/usr/local/redis

啟動redis:

第一種:不推薦

cd /usr/local/redis/bin
./redis-server

第二種:使用配置文件

cd redis-3.0.0
cp redis.conf /usr/local/redis/bin
vi /usr/local/redis/bin/redis.conf

修改daemonize為yes,然後:wq保存

啟動:

./redis-server redis.conf

關閉:

./redis-cli shutdown

連接redis:Redis默認是16個數據庫

第一種:直接使用自帶客戶端連接

./redis-cli -h 127.0.0.1 -p 6379

第二種:使用windows的圖形化界面客戶端連接(直觀)

註意:如果有連接不到但是確定已經開啟了redis的情況,需要配置防火墻

重點要關註的是第三點:Java連接,稍後再說,先來看一看數據類型

在自帶客戶端中進行操作:選擇第一個(也就是redis-0)數據庫

127.0.0.1:6379> select 0
OK

String數據類型:

127.0.0.1:6379> set key value
OK
127.0.0.1:6379> get key
"value"
127.0.0.1:6379> 

多條信息存儲和獲取:

127.0.0.1:6379> mset k1 v1 k2 v2
OK
127.0.0.1:6379> mget k1 k2
1) "v1" 2) "v2" 127.0.0.1:6379>

根據key刪除信息:

127.0.0.1:6379> del k1 k2
(integer) 2

數值增減:

遞增:

127.0.0.1:6379> incr num
(integer) 1
127.0.0.1:6379> incr num
(integer) 2
127.0.0.1:6379> incr num
(integer) 3
127.0.0.1:6379> get num
"3"
127.0.0.1:6379> 
127.0.0.1:6379> incrby num 2
(integer) 2
127.0.0.1:6379> incrby num 2
(integer) 4
127.0.0.1:6379> incrby num 2
(integer) 6
127.0.0.1:6379> get num
"6"

遞減:

127.0.0.1:6379> decr num
(integer) -1
127.0.0.1:6379> decr num
(integer) -2
127.0.0.1:6379> decr num
(integer) -3
127.0.0.1:6379> get num
"-3"
127.0.0.1:6379> decrby num 3
(integer) -3
127.0.0.1:6379> decrby num 3
(integer) -6
127.0.0.1:6379> decrby num 3
(integer) -9
127.0.0.1:6379> get num
"-9"

一些其他命令的示範:

127.0.0.1:6379> set str hello
OK
127.0.0.1:6379> append str " world!"
(integer) 12
127.0.0.1:6379> get str
"hello world!"

Hash類型:可以理解為HashMap

代替Hash類型的方式:將需要保存的信息轉換成JSON字符串

hset命令,插入和更新沒有區分

127.0.0.1:6379> hset user username root
(integer) 1
127.0.0.1:6379> hset user password root
(integer) 1

多條插入:

127.0.0.1:6379> hmset user username root password root
OK

當不存在時候賦值:當字段不存在時賦值,存在的話不做任何操作

127.0.0.1:6379> hset user username root
(integer) 1
127.0.0.1:6379> hsetnx user username admin
(integer) 0
127.0.0.1:6379> 

取Hash中的值:

127.0.0.1:6379> hget user username
"root"
127.0.0.1:6379> hmget user username password
1) "root"
2) "123"
127.0.0.1:6379> hgetall user
1) "username"
2) "root"
3) "password"
4) "123"

刪除Hash中的字段:

127.0.0.1:6379> hdel user username
(integer) 1
127.0.0.1:6379> hgetall user
1) "password"
2) "123"

Hash字段增加數字:

127.0.0.1:6379> hset user age 30
(integer) 1
127.0.0.1:6379> hincrby user age 2
(integer) 32
127.0.0.1:6379> hget user age
"32"

判斷字段是否存在:

127.0.0.1:6379> hexists user age
(integer) 1
127.0.0.1:6379> hexists user sex
(integer) 0

只獲取key或者value:

127.0.0.1:6379> hkeys user
1) "password"
2) "age"
127.0.0.1:6379> hvals user
1) "123"
2) "32"

獲取大小:

127.0.0.1:6379> hlen user
(integer) 2

在實際中的應用:比如添加商品

127.0.0.1:6379> hmset item:1001 name iphonex price 7000 id 1001 color black
OK
127.0.0.1:6379> hkeys item:1001
1) "name"
2) "price"
3) "id"
4) "color"

List類型:就像是Java的ArrayList

向左邊或者右邊添加元素:

127.0.0.1:6379> lpush list:1 1 2 3
(integer) 3
127.0.0.1:6379> rpush list:1 4 5 6 
(integer) 6

最終list:1是什麽呢?

1->2 1-> 3 2 1->3 2 1 4->3 2 1 4 5->3 2 1 4 5 6

根據開始索引和結束索引查看:

127.0.0.1:6379> lrange list:1 1 3
1) "2"
2) "1"
3) "4"

如果想全部讀取,設置為0到-1即可:

127.0.0.1:6379> lrange list:1 0 -1
1) "3"
2) "2"
3) "1"
4) "4"
5) "5"
6) "6"

從列表的兩端彈出元素:

127.0.0.1:6379> lpop list:1
"3"
127.0.0.1:6379> rpop list:1
"6"
127.0.0.1:6379> lrange list:1 0 -1
1) "2"
2) "1"
3) "4"
4) "5"

列表長度:

127.0.0.1:6379> llen list:1
(integer) 4

刪除:-1:從右往左刪除第一個5;1:從左往右刪除第一個5;0:刪除所有的5

127.0.0.1:6379> lrem list:1 -1 5
(integer) 0
127.0.0.1:6379> lrem list:1 1 5
(integer) 0

獲取指定索引:

127.0.0.1:6379> lindex list:1 2
"4"
127.0.0.1:6379> lrange list:1 0 -1
1) "2"
2) "1"
3) "4"

設置指定索引的值:

127.0.0.1:6379> lset list:1 2 100
OK
127.0.0.1:6379> lrange list:1 0 -1
1) "2"
2) "1"
3) "100"

只保留列表某一部分元素:

127.0.0.1:6379> ltrim list:1 0 1
OK
127.0.0.1:6379> lrange list:1 0 -1
1) "2"
2) "1"

插入:linsert [name] [after/before] [value] [new value]

127.0.0.1:6379> lrange list:1 0 -1
1) "9"
2) "7"
3) "2"
4) "1"
127.0.0.1:6379> linsert list:1 before 2 100
(integer) 5
127.0.0.1:6379> lrange list:1 0 -1
1) "9"
2) "7"
3) "100"
4) "2"
5) "1"

Set類型:

特點:不重復,無序

增刪查:

127.0.0.1:6379> sadd set a b c d
(integer) 4
127.0.0.1:6379> sadd set a
(integer) 0
127.0.0.1:6379> srem set d
(integer) 1
127.0.0.1:6379> smembers set
1) "c"
2) "b"
3) "a"

差集運算:[1,2,3]和[2,3,4]的差集

127.0.0.1:6379> sadd set1 1 2 3 
(integer) 3
127.0.0.1:6379> sadd set2 2 3 4 
(integer) 3
127.0.0.1:6379> sdiff set1 set2
1) "1"
127.0.0.1:6379> sdiff set2 set1
1) "4"

交集運算:[1,2,3]和[2,3,4]的交集

127.0.0.1:6379> sinter set1 set2
1) "2"
2) "3"

並集運算:[1,2,3]和[2,3,4]的並集

127.0.0.1:6379> sunion set1 set2
1) "1"
2) "2"
3) "3"
4) "4"

Redis安裝及使用詳解