半小時快速瞭解redis,基於ubuntu 12.04 + redis 2.8.9

一.什麼是redis ?

其官方介紹是: Redis is what is called a key-value storeoften referred to as a NoSQL database.redis

Redis is an open source, BSD licensed, advanced key-value store. It is often referred to as a data structure server sincekeys can contain stringshasheslistssets and sorted sets.數據庫

意思是:redis是一個key-value (鍵值對) 存儲的NoSQL數據庫,是開源的,能夠用來存儲的key的類型分爲字符串,哈希,list,set和可排序的set.ubuntu

二.如何用?

1.下載redis

須要安裝一下redis,最新的版本爲2.8.9,下載地址爲:Redis 2.8.9 is the latest stable version學習

2.解壓redis

下載完成後,ubuntu下執行命令進行解壓:flex

tar -zxvf redis-2.8.9.tar.gz 

3.啓動redis

cd redis-2.8.9
#首先,編譯redis
make
#其次,啓動redis
  cd src
 ./redis-server

4.鏈接redis

    cd src
    ./redis-cli
    redis> ping
    PONG
    redis> set foo bar
    OK
    redis> get foo
    "bar"
    redis> incr mycounter
    (integer) 1
    redis> incr mycounter
    (integer) 2
    redis> 

鏈接好了之後就可使用redis了.spa

三.redis經常使用命令

若是不想安裝redis,能夠直接在線學習redis:http://try.redis.io/code

同時,也能夠直接查看其命令:http://redis.io/commandsserver

1.第一組命令(set get ):

  • set命令
  • get命令
  SET server:name "fido"
  GET server:name => "fido"

這樣就進行了賦值和取值,server:name就是key,value就是"fido".blog

 

2.第二組命令(自增.自減):

  • INCR命令
  • DEL命令
  • DECR命令
127.0.0.1:6379> set a 10
OK
127.0.0.1:6379> decr a
(integer) 9
127.0.0.1:6379> incr a
(integer) 10
127.0.0.1:6379> del a
(integer) 1
127.0.0.1:6379> get a
(nil)

INCR是自增命令,默認每執行一次INCR命令自增1,而DECR則是自減命令,每次自減1,del則是刪除指定的key.排序

INCR是原子性命令,對於其數據修改,要麼全都執行,要麼全都不執行.

 

3.第三組命令(超時):

  • EXPIRE命令
  • TTL命令
    SET resource:lock "Redis Demo 1"
    EXPIRE resource:lock 120
    TTL resource:lock => 119
    SET resource:lock "Redis Demo 2"
    TTL resource:lock => -1

EXPIRE命令是設置超時命令的,即如上面的例子,resource:lock只能存在120秒,超時即被刪除.

TTL命令是查看key剩餘存活時間.

 

4.第四組命令(list):

  • RPUSH
  • LPUSH
  • LLEN
  • LRANGE
  • LPOP
  • RPOP
    RPUSH friends "Alice"
    RPUSH friends "Bob"

RPUSH是每次都將value添加到list的最後面.

 LPUSH friends "Sam"

 LPUSH 是每次都將value添加到list的最前面.

    LRANGE friends 0 -1 => ["Sam","Alice","Bob"]
    LRANGE friends 0 1 => ["Sam","Alice"]
    LRANGE friends 1 2 => ["Alice","Bob"]

LRANGE key 0 -1表示查看全部list的value,若是是大於-1的數值,例如0 1,則表示顯示下表爲0到1的值.

由lrange輸出能夠看出,lpush 'sam'是後添加的數據,卻排到了最前面.

  LLEN friends => 3

LLEN key 表示的輸出list的長度.

 LPOP friends => "Sam"

LPOP表示刪除第一條數據,而且回顯刪除的數據,與上面的LPUSH相反,這裏要特別注意,別搞混了.

  RPOP friends => "Bob"

RPOP則與LPOP相反是刪除list最後一條數據.

 

 5.第五組命令(set):

set命令與list命令很是類似,但不一樣的是,其是無序的,值只能出現一次的,值不能重複出現,key和value是一對多的關係.

  • SADD
  • SREM
  • SISMEMBER
  • SMEMBERS
  • SUNION
    SADD superpowers "flight"
    SADD superpowers "x-ray vision"
    SADD superpowers "reflexes"

SADD命令便是將值添加到set中.

SREM superpowers "reflexes"

SREM表示刪除set中的指定的value.

    SISMEMBER superpowers "flight" => true
    SISMEMBER superpowers "reflexes" => false

sismember判斷值究竟是不是SET中的,是就返回true,不是,就返回false.

SMEMBERS superpowers => ["flight","x-ray vision"]

SMEMBERS返回全部的value.

    SADD birdpowers "pecking"
    SADD birdpowers "flight" SUNION superpowers birdpowers => ["flight","x-ray vision","pecking"]

SUNION合併兩個SET集體,因爲set是無序的,因此這裏順序是不肯定的.

 

6.第六組命令(sorted set):

  • ZADD
  • ZRANGE
    ZADD hackers 1940 "Alan Kay"
    ZADD hackers 1906 "Grace Hopper"
    ZADD hackers 1953 "Richard Stallman"
    ZADD hackers 1965 "Yukihiro Matsumoto"
    ZADD hackers 1916 "Claude Shannon"
    ZADD hackers 1969 "Linus Torvalds"
    ZADD hackers 1957 "Sophie Wilson"
    ZADD hackers 1912 "Alan Turing"

ZADD將數據添加到有序set集合中,進行自動排序.

ZRANGE hackers 2 4 => ["Claude Shannon", "Alan Kay","Richard Stallman"]

ZRANGE表示輸出指定範圍的數據.

 

7.第七組命令(HASH)

  • HSET命令
  • HGETALL命令
  • HMSET命令
127.0.0.1:6379> hset user:1000 name 'amosli'
(integer) 1
127.0.0.1:6379> hset user:1000 email 'hi_amsli@outlook.com'
(integer) 1
127.0.0.1:6379> hset user:1000 password '123456'
(integer) 1
127.0.0.1:6379> hgetall user:1000
1) "name"
2) "amosli"
3) "email"
4) "hi_amsli@outlook.com"
5) "password"
6) "123456"

HASH與JAVA中的Map集合很是相似,一個key對應一個value.

HSET命令就是set指定的key和value.

HGETALL命令便是指獲取全部的key-value

127.0.0.1:6379> hmset user:1001 name 'hiamos' password '11223344' email 'hi_amosOKutlook.com' 

HMSET一次性設置多個key-value

 

8.第八組命令

  • HINCRBY
  • HDEL
    HSET user:1000 visits 10 HINCRBY user:1000 visits 1 => 11
    HINCRBY user:1000 visits 10 => 21 HDEL user:1000 visits
    HINCRBY user:1000 visits 1 => 1

HINCRBY能夠理解爲加法,將一個值加上另外一個值.

HDEL則是刪除.

 

9.第九組命令

  • flushall
  • brpop
  • keys
  • client list

flushall:將全部數據清空.

brpop:阻塞,只到有數據返回,有數據時刪除list中的最後一條並返回.

keys:查詢匹配規則的全部key

redis> MSET one 1 two 2 three 3 four 4
OK
redis> KEYS *o*
1) "one"
2) "four"
3) "two"
redis> KEYS t??
1) "two"
redis> KEYS *
1) "one"
2) "three"
3) "four"
4) "two"

 

client list:列出client的相關內容

127.0.0.1:6379> client list
addr=127.0.0.1:39414 fd=6 name= age=8734 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=32768 obl=0 oll=0 omem=0 events=r cmd=client
相關文章
相關標籤/搜索