推薦在Linux系統上安裝,這裡我採用CentOS6: Redis採用3.0.0版本,官網下載即可 由於Redis是C語言編寫,需要安裝gcc(部分Linux自帶gcc) 解壓安裝包: 編譯redis源碼: 安裝: 啟動redis: 第一種:不推薦 第二種:使用配置文件 修改daemonize為ye ...
推薦在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"