Redis 是一個高性能的key-value數據庫。html
Redis官方並不支持Windows。 可是,微軟針對Win64本身開發了一個windows版的redis並共享到github上。git
點擊https://github.com/MSOpenTech/redis/releases下載。github
選擇你喜歡的安裝方式,這裏我選擇壓縮版。
redis
安裝/解壓縮後到redis目錄找到redis-server.exe和redis-cli.exe
數據庫
雙擊redis-server.exe啓動redis服務
windows
雙擊redis-cli.exe啓動客戶端,用來訪問redis服務。
性能
測試一下,設置x的值爲1並獲取x。
測試
redis使用key-value來存儲數據。flex
使用set命令設置值,並用get命令獲取值。網站
> set name "tenny" OK > get name "tenny"
del刪除一個key
> del name (integer) 1 > get name (nil)
incr遞增一個值,若是key不存在則創造它並初始化值爲1
> set connections 10 OK > incr connections (integer) 11 > incr connections (integer) 12 > del connections (integer) 1 > incr connections //connections不存在,初始化爲1 (integer) 1
setnx(set-if-not-exists),若是key不存在才改變值。
> set name "panda" OK > get name "panda" > setnx name "tenny" //由於name存在因此不會改變值 (integer) 0 > get name "panda" > get age (nil) > setnx age 22 //age不存在,賦值爲22 (integer) 1 > get age "22"
expire設置生存時間,ttl查看剩餘時間。
> set name "tenny" OK > expire name 120 //設置name生存時間爲120秒 (integer) 1 > ttl name (integer) 80 //剩餘80秒 > ttl name //2分鐘後 (integer) -2 //-2表示name這個key已經不存在了。 > get name (nil) > set name "tenny" OK > ttl name (integer) -1 //默認-1表示永久存在 > expire name 120 (integer) 1 > ttl name (integer) 118 > get name "tenny" > set name "panda" //設置值會重置存在時間 OK > ttl name (integer) -1
> rpush color "blue" //[bule] (integer) 1 > rpush color "red" //[bule, red] (integer) 2
> lpush color "yellow" //[yellow, bule, red] (integer) 3
> llen color (integer) 3
> lrange color 0 2 1) "yellow" 2) "blue" 3) "red" > lrange color 0 1 1) "yellow" 2) "blue" > lrange color 1 2 1) "blue" 2) "red" > lrange color 1 2 1) "blue" 2) "red"
> lpop color "yellow" > llen color (integer) 2 > lrange color 0 -1 1) "blue" 2) "red"
> rpop color "red" > llen color (integer) 1 > lrange color 0 -1 1) "blue"
set相似list,可是元素沒有順序且只能出現一次。
> sadd superpowers "flight" //["flight"] (integer) 1 > sadd superpowers "x-ray vision" //["flight", "x-ray vision"] (integer) 1 > sadd superpowers "reflexes" //["flight", "x-ray vision", "reflexes"] (integer) 1 > SADD superpowers "flight" //重複添加無效 (integer) 0
> srem superpowers "reflexes" //["flight", "x-ray vision"] 1
> sismember superpowers "flight" (integer) 1 > sismember superpowers "reflexes" (integer) 0
> sismember superpowers 1) "x-ray vision" 2) "flight"
> sadd birdpowers "pecking" (integer) 1 > sadd birdpowers "flight" (integer) 1 > smembers birdpowers 1) "pecking" 2) "flight" > smembers superpowers 1) "x-ray vision" 2) "flight" > sunion superpowers birdpowers //無序的 sunion birdpowers superpowers結果同樣 1) "pecking" 2) "flight" 3) "x-ray vision"
有序集合(sorted set)相似集合,不過它每一個元素有一個關聯值,經過這個關聯值對元素進行排序。
> zadd hackers 1940 "Alan Kay" (integer) 1 > zadd hackers 1906 "Grace Hopper" (integer) 1 > zadd hackers 1953 "Richard Stallman" (integer) 1 > zadd hackers 1965 "Yukihiro Matsumoto" (integer) 1 > zadd hackers 1916 "Claude Shannon" (integer) 1 > zadd hackers 1969 "Linus Torvalds" (integer) 1 > zadd hackers 1957 "Sophie Wilson" (integer) 1 > zadd hackers 1912 "Alan Turing" (integer) 1
> zrange hackers 0 -1 1) "Grace Hopper" 2) "Alan Turing" 3) "Claude Shannon" 4) "Alan Kay" 5) "Richard Stallman" 6) "Sophie Wilson" 7) "Yukihiro Matsumoto" 8) "Linus Torvalds"
能夠看到元素以年份遞增排序。
> ZRANGE hackers 2 4 1) "Claude Shannon" 2) "Alan Kay" 3) "Richard Stallman"
hash 是一個string類型的field和value的映射表,hash特別適合用於存儲對象。
> hset user name "tenny" (integer) 1 > hset user email "tenny@example.com" (integer) 1 > hset user password "cutepanda" (integer) 1
> hget user name "tenny"
> hgetall user 1) "name" 2) "tenny" 3) "email" 4) "tenny@example.com" 5) "password" 6) "cutepanda"
> hmset user1 name "tenny1" password "cutepanda1" email "tenny1@example.com" OK > hgetall user1 1) "name" 2) "tenny1" 3) "password" 4) "cutepanda1" 5) "email" 6) "tenny1@example.com"
能夠使用hset繼續添加或修改
> hset user1 age 22 (integer) 1 > hgetall user1 1) "name" 2) "tenny1" 3) "password" 4) "cutepanda1" 5) "email" 6) "tenny1@example.com" 7) "age" 8) "22" > hset user1 age 24 //已存在的值重複設定返回0,新值返回1 (integer) 0 > hgetall user1 1) "name" 2) "tenny1" 3) "password" 4) "cutepanda1" 5) "email" 6) "tenny1@example.com" 7) "age" 8) "24"
> hset user visits 10 (integer) 1 > hincrby user visits 1 (integer) 11 > hincrby user visits 1 (integer) 12
> hdel user visits (integer) 1 > hdel user age //刪除不存在的域返回0 (integer) 0 > hdel user visits (integer) 0 > hincrby user visits 20 //字段不存在則默認設置爲0後再執行此增長操做 (integer) 20
以上介紹了redis的一些簡單命令,能夠訪問redis中文官方網站瞭解更多。