redis安裝和使用
redis安裝
wget http://download.redis.io/redis-stable.tar.gz tar zxvf redis-stable.tar.gz cd redis-stable.tar.gz make make install
redis啓動
redis-server
redis-cli shutdown
配置
方法一
redis-server /path/to/redis.conf redis-server /path/to/redis.conf --loglevel warning //設置日誌級別
方法二
redis-cli redis > CONFIG SET loglevel warning
多數據庫的選擇
> select 1
數據庫基本操作
(1)添加數據和查找數據,通過set/get命令添加和獲取數據
127.0.0.1:6379> select 1 OK 127.0.0.1:6379[1]> set bar 1 OK 127.0.0.1:6379[1]> get bar "1" 127.0.0.1:6379[1]> get aaa (nil)
(2)判斷一個鍵是否存在,exists命令可以判斷key是否存在,存在返回1,不存在返回0
127.0.0.1:6379[1]> exists bar (integer) 1 127.0.0.1:6379[1]> exists aaa (integer) 0
(3)刪除數據,del命令刪除key,返回值爲成功刪除key的個數
127.0.0.1:6379[1]> del aaa (integer) 0 127.0.0.1:6379[1]> del bar (integer) 1
(4)獲取value的類型
127.0.0.1:6379[1]> set bar 1 OK 127.0.0.1:6379[1]> type bar string
(5)自增和自減,incr 、decr以及incrby和decrby實現整數的加減
127.0.0.1:6379[1]> INCR ab (integer) 1 127.0.0.1:6379[1]> INCR ab (integer) 2 127.0.0.1:6379[1]> INCRBY ab 2 (integer) 4 127.0.0.1:6379[1]> DECR ab (integer) 3 127.0.0.1:6379[1]> DECRBY ab 2 (integer) 1
(6)增加指定浮點數,incrbyfloat可以指定自增的浮點數
127.0.0.1:6379[1]> INCRBYFLOAT ab 1.1 "2.1"
(7)向尾部追加,append命令可以向字符尾部追加內容
127.0.0.1:6379[1]> set key hello OK 127.0.0.1:6379[1]> append key world (integer) 10 127.0.0.1:6379[1]> get key "helloworld"
(8)獲取字符串長度,strlen獲取value的長度
127.0.0.1:6379[1]> STRLEN key (integer) 10
(9)批量設置和獲取,通過mset和mget命令可以批量執行設置和獲取
127.0.0.1:6379[1]> mset key1 va1 key2 va2 OK 127.0.0.1:6379[1]> mget key1 key2 1) "va1" 2) "va2"
(10)位操作
getbit key offset setbit key offset bitcount key [start] [end] bitop operation destkey key [key ...]
散列類型
{ "id":1, "name":"test" }
基本操作
(1)存儲方法,可以通過hset和hget來設置和獲取數據
127.0.0.1:6379[1]> hset user id 1 (integer) 1 127.0.0.1:6379[1]> hset user name test (integer) 1 127.0.0.1:6379[1]> hget user id "1" 127.0.0.1:6379[1]> hget user name "test"
(2)判斷字段是否存在,hexists命令,返回1存在,返回0不存在
127.0.0.1:6379[1]> hexists user id (integer) 1 127.0.0.1:6379[1]> hexists user age (integer) 0
(3)使用hsetnx(hset if not exists)如果不存在賦值
127.0.0.1:6379[1]> hsetnx user age 111 (integer) 1 127.0.0.1:6379[1]> hget user age "111"
(4)增加數字
127.0.0.1:6379[1]> hincrby user score 60 (integer) 60 127.0.0.1:6379[1]> hget user score "60"
(5)刪除字段
127.0.0.1:6379[1]> hdel user score (integer) 1 127.0.0.1:6379[1]> hget user score (nil)
如何存儲數據?
鍵 字段 字段值 post:id field value
127.0.0.1:6379[1]> incr userid (integer) 1 127.0.0.1:6379[1]> hset user:1 name test (integer) 1 127.0.0.1:6379[1]> hset user:1 score 90 (integer) 1 127.0.0.1:6379[1]> incr userid (integer) 2 127.0.0.1:6379[1]> hset user:2 name test2 (integer) 1 127.0.0.1:6379[1]> hset user:2 score 99 (integer) 1
添加了兩條數據,id爲1的名字爲test分數爲90,而id爲2的名字爲test2分數爲90.
127.0.0.1:6379[1]> hmget user:1 name score 1) "test" 2) "90"
127.0.0.1:6379[1]> hgetall user:2 1) "name" 2) "test2" 3) "score" 4) "99"
127.0.0.1:6379[1]> hkeys user:1 1) "name" 2) "score" 127.0.0.1:6379[1]> hvals user:1 1) "test" 2) "90"
127.0.0.1:6379[1]> hlen user:1 (integer) 2
需要注意的是,散列類型無法獲取所有存在的鍵值,也就是id,如果刪除了中間某個id的話,只可以使用exist命令來判斷key是否存在。
列表類型
基本操作
列表的基本操作命令都是以l開頭的。
127.0.0.1:6379> lpush user test (integer) 1 127.0.0.1:6379> rpush user test1 (integer) 2 127.0.0.1:6379> lpop user "test" 127.0.0.1:6379> rpop user "test1" 127.0.0.1:6379>
127.0.0.1:6379> llen user (integer) 0 127.0.0.1:6379> lpush user test (integer) 1 127.0.0.1:6379> llen user (integer) 1
127.0.0.1:6379> lrange user 0 3 1) "test" 2) "test1" 3) "test2" 4) "test3" 127.0.0.1:6379> lrange user 0 2 1) "test" 2) "test1" 3) "test2"
lrem key count value @count 爲刪除個數,大於0的話從左邊開始,小於0的話從右邊開始 @value 要刪除的值
我們可以把數據的id存儲在列表中,當某一行數據被刪除時候,只需要刪除爲該value爲key即可,而查詢數據的時候,需要先從列表中讀取所有的id,再從散列表中讀取數據。
127.0.0.1:6379> lrange user 0 -1 1) "test" 2) "test1" 3) "test2" 4) "test3" 127.0.0.1:6379> linsert user before test1 test0 (integer) 5 127.0.0.1:6379> linsert user after test1 test1.5 (integer) 6 127.0.0.1:6379> lrange user 0 -1 1) "test" 2) "test0" 3) "test1" 4) "test1.5" 5) "test2" 6) "test3"
rdroplpush source destination 從source列表的右側彈出一個數據,添加到destination列表的左側
集合類型
127.0.0.1:6379> sadd key 1 (integer) 1 127.0.0.1:6379> sadd key 2 (integer) 1 127.0.0.1:6379> sadd key 2 (integer) 0 127.0.0.1:6379> smembers key 1) "1" 2) "2" 127.0.0.1:6379> srem key 2 (integer) 1 127.0.0.1:6379> smembers key 1) "1"
127.0.0.1:6379> sismember key 1 (integer) 1 127.0.0.1:6379> sismember key 3 (integer) 0
sdiff key [key...] sinter key [key...] sunion key [key...]
127.0.0.1:6379> scard key (integer) 1
sdiffstore destination key [key...] sinterstore destination key[key...] sunionstore destination key[key...]
srandmember key [count] 127.0.0.1:6379> srandmember key 3 1) "4" 2) "2" 3) "3"
有序集合類型 sorted set
基本操作
(1)zadd添加元素,並設置分數score
127.0.0.1:6379> zadd students 60 xiaoming (integer) 1 127.0.0.1:6379> zadd students 80 daxiong (integer) 1
127.0.0.1:6379> zscore students xiaoming "60"
127.0.0.1:6379> zrange students 0 1 1) "xiaoming" 2) "daxiong"
127.0.0.1:6379> zrangebyscore students 0 70 1) "xiaoming" 127.0.0.1:6379> zrangebyscore students 0 100 1) "xiaoming" 2) "daxiong"
獲取從0開始的前2個數據 127.0.0.1:6379> zrangebyscore students 0 100 limit 0 2 1) "xiaoming" 2) "daxiong" 獲取從1開始的前2個數據 127.0.0.1:6379> zrangebyscore students 0 100 limit 1 2 1) "daxiong"
127.0.0.1:6379> zincrby students 5 xiaoming "65" 127.0.0.1:6379> zincrby students -5 xiaoming "60"
127.0.0.1:6379> zcard students (integer) 2
zcount key min max 127.0.0.1:6379> zcount students 0 70 (integer) 1 127.0.0.1:6379> zcount students 0 90 (integer) 2
zrem key [key...]
zremrangebyrank key start stop
zremrangebyscore key min max
127.0.0.1:6379> zrank students xiaoming (integer) 0
參考
http://redis.readthedocs.org/en/latest/