Redis 培訓學習總結

jopen 12年前發布 | 50K 次閱讀 Redis NoSQL數據庫

redis支持的數據結構:strings,lists,hashes,set,sorted set。下面一一來做實驗

strings的具體操作有:get/set/setnx,append,strlen,getrange/setrange,incr/decr/incrby/decrby,mget/mset,意思很簡單大致都能看明白

get/set就是插數據去數據(key----value對應著來):

redis 127.0.0.1:6379[1]> set test chen
OK
redis 127.0.0.1:6379[1]> set test2 zhou
OK
redis 127.0.0.1:6379[1]> get test
"chen"
redis 127.0.0.1:6379[1]> get test2
"zhou"
setnx就是插入數據看看是否存在相同的key值,如果存在則不執行返回0,如果不存在則執行返回1:

redis 127.0.0.1:6379[1]> setnx test 11111
(integer) 0
redis 127.0.0.1:6379[1]> get test
"chen"
append更是簡單了,就是平時用的追加字符:

redis 127.0.0.1:6379[1]> get test
"chen"
redis 127.0.0.1:6379[1]> append test @gmail.com
(integer) 14
redis 127.0.0.1:6379[1]> get test
"chen@gmail.com"
getrange/setrange的用法就是簡單的字符串操作,取出相對位置的字符,或者設置。這里實驗的時候出現了問題,主要是對setrange的操作不熟悉,大家看看下面操作就明白了setrange是對相應位置進行等數量替換的,5的位置就是@那里,QQ.com是6個字符去替換mysina.com10個字符時,只能是代替前6個了。

redis 127.0.0.1:6379[1]> set test3 chen@gmail.com
OK
redis 127.0.0.1:6379[1]> get test3
"chen@gmail.com"
redis 127.0.0.1:6379[1]> setrange test3 5 mysina.com
(integer) 15
redis 127.0.0.1:6379[1]> get test3
"chen@mysina.com"
redis 127.0.0.1:6379[1]> setrange test3 5 QQ.com
(integer) 15
redis 127.0.0.1:6379[1]> get test3
"chen@QQ.com.com"
incr/decr/incrby/decrby就是自加自減的意思后面的incrby/decrby加入了步長,還有就是如果沒有key值的話,它也可以操作:

redis 127.0.0.1:6379> set age 20
OK
redis 127.0.0.1:6379> incr age
(integer) 21
redis 127.0.0.1:6379> get age
"21"
redis 127.0.0.1:6379> incrby age 5
(integer) 26
redis 127.0.0.1:6379> incrby ss 3
(integer) 3
redis 127.0.0.1:6379> incr tt 2
(error) ERR wrong number of arguments for 'incr' command
redis 127.0.0.1:6379> get tt
(nil)
mget/mset就是批量的插入取出。

hash表的基本操作與string一樣,hget/hset/hsetnx,happend,hstrlen,hgetrange/hsetrange,hincr/hdecr/hincrby/hdecrby,hmget/hmset,就是在前面加了個H而已。它特別適合存儲對象數據。基本的操作跟上面是一樣的,這里的key作為hash的名字來用了,在操作時需要給出你要插入取出的hash域:

redis 127.0.0.1:6379[1]> hset myhash ID 001
(integer) 1
redis 127.0.0.1:6379[1]> hset myhash name chen
(integer) 1
redis 127.0.0.1:6379[1]> hset myhash address ncut
(integer) 1
redis 127.0.0.1:6379[1]> hset myhash telephone 12332123
(integer) 1
redis 127.0.0.1:6379[1]> hget myhash id
(nil)
redis 127.0.0.1:6379[1]> hget myhash ID
"001"
redis 127.0.0.1:6379[1]> hget myhash name
"chen"
redis 127.0.0.1:6379[1]> hget myhash0000 name
(nil)
其他的操作跟上面一樣雷同即可:

redis 127.0.0.1:6379[1]> hkeys myhash
1) "ID"
2) "name"
3) "address"
4) "telephone"
redis 127.0.0.1:6379[1]> hvals myhash
1) "001"
2) "chen"
3) "ncut"
4) "12332123"
redis 127.0.0.1:6379[1]> hgetall myhash
1) "ID"
2) "001"
3) "name"
4) "chen"
5) "address"
6) "ncut"
7) "telephone"
8) "12332123"
lists鏈表結構,主要的功能就是pop/push,其中啊key作為鏈表的名字來用了。還有主要的就是(lr)pop/()lrpush就決定了它能夠左(右)插入右(左)取出,即可做隊列又可做堆棧來用。它還有一個奇怪的地方在于它的阻塞機制,b(lr)pop,b(lr)push

redis 127.0.0.1:6379[1]> lpush mylist chen
(integer) 1
redis 127.0.0.1:6379[1]> lpush mylist chen2
(integer) 2
redis 127.0.0.1:6379[1]> lpush mylist chen3
(integer) 3
redis 127.0.0.1:6379[1]> rpush mylist chen2
(integer) 4
redis 127.0.0.1:6379[1]> rpush mylist chen3
(integer) 5
redis 127.0.0.1:6379[1]> lrange mylist 0 -1
1) "chen3"
2) "chen2"
3) "chen"
4) "chen2"
5) "chen3"
redis 127.0.0.1:6379[1]> lpop mylist
"chen3"
redis 127.0.0.1:6379[1]> lrange mylist 0 -1
1) "chen2"
2) "chen"
3) "chen2"
4) "chen3"
這里是set和insert的用法:

redis 127.0.0.1:6379[1]> linsert mylist before chen chenInsert
(integer) 5
redis 127.0.0.1:6379[1]> lrange mylist 0 -1
1) "chen2"
2) "chenInsert"
3) "chen"
4) "chen2"
5) "chen3"
redis 127.0.0.1:6379[1]> lset mylist 0 setTest
OK
redis 127.0.0.1:6379[1]> lrange mylist 0 -1
1) "setTest"
2) "chenInsert"
3) "chen"
4) "chen2"
5) "chen3"
這里是lrem的用法:這里需要一個參數,當給出的值是0時默認是全部刪除

redis 127.0.0.1:6379[1]> lrange mylist 0 -1
1) "chen"
2) "chen"
3) "setTest"
4) "chenInsert"
5) "chen"
6) "chen2"
7) "chen3"
redis 127.0.0.1:6379[1]> lrem mylist chen
(error) ERR wrong number of arguments for 'lrem' command
redis 127.0.0.1:6379[1]> lrem mylist 1 chen ###此處需要表明刪除的個數,就是說從左邊刪除幾個值
(integer) 1
redis 127.0.0.1:6379[1]> lrange mylist 0 -1
1) "chen"
2) "setTest"
3) "chenInsert"
4) "chen"
5) "chen2"
6) "chen3"
redis 127.0.0.1:6379[1]> lrange mylist 0 -1
1) "chen"
2) "setTest"
3) "chenInsert"
4) "chen"
5) "chen2"
6) "chen3"
redis 127.0.0.1:6379[1]> lrem mylist 0 chen
(integer) 2
redis 127.0.0.1:6379[1]> lrange mylist 0 -1
1) "setTest"
2) "chenInsert"
3) "chen2"
4) "chen3"
其他的自己試驗下吧,這里就不做演示了,太多了

還有set和sorted set 比較上面幾種不常用還復雜,就不做演示了。

轉自:http://blog.csdn.net/chen861201/article/details/7724786

 

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!