Redis入門

redis簡介

Redis 是一個高性能的key-value數據庫。html

  • Redis可基於內存亦可持久化。
  • Redis 支持存儲的value類型豐富,包括string(字符串)、list(鏈表)、set(集合)、zset(sorted set --有序集合)和hash(哈希類型)
  • Redis性能極高,讀的速度可高達110000次/s,寫的速度可高達81000次/s 。
  • Redis的全部操做都是原子性的,Redis還支持幾個操做合併後的原子性執行。

Redis 下載安裝

Redis官方並不支持Windows。 可是,微軟針對Win64本身開發了一個windows版的redis並共享到github上。git

點擊https://github.com/MSOpenTech/redis/releases下載。github

選擇你喜歡的安裝方式,這裏我選擇壓縮版。
下載redisredis

安裝/解壓縮後到redis目錄找到redis-server.exe和redis-cli.exe
redis目錄數據庫

雙擊redis-server.exe啓動redis服務
redis服務windows

雙擊redis-cli.exe啓動客戶端,用來訪問redis服務。
redis客戶端性能

測試一下,設置x的值爲1並獲取x。
redis測試測試

使用redis

redis使用key-value來存儲數據。flex

set & get

使用set命令設置值,並用get命令獲取值。網站

> set name "tenny"
OK
> get name
"tenny"

del

del刪除一個key

> del name
(integer) 1
> get name
(nil)

incr

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

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

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

list操做:rpush & lpush & llen & lrange & lpop & rpop

  • rpush在list末尾添加元素
> rpush color "blue"    //[bule]
(integer) 1
> rpush color "red"   //[bule, red]
(integer) 2
  • lpush在list開頭添加元素
> lpush color "yellow"    //[yellow, bule, red]
(integer) 3
  • llen查看list長度
> llen color
(integer) 3
  • lrange查看list內容,接受兩個參數,開始index和結尾index,若是結尾index爲-1,表示直到list末尾。
> 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移除list第一個元素並返回它
> lpop color
"yellow"
> llen color
(integer) 2
> lrange color 0 -1
1) "blue"
2) "red"
  • rpop移除list最後一個元素並返回它
> rpop color
"red"
> llen color
(integer) 1
> lrange color 0 -1
1) "blue"

set操做:sadd & srem & sismember & smembers & sunion

set相似list,可是元素沒有順序且只能出現一次。

  • sadd添加一個元素到set
> 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從set中移除一個元素
> srem superpowers "reflexes"   //["flight", "x-ray vision"]
1
  • sismember測試一個元素是否存在於set,存在返回1,不存在返回0
> sismember superpowers "flight"
(integer) 1
> sismember superpowers "reflexes"
(integer) 0
  • smembers查看set全部元素
> sismember superpowers
1) "x-ray vision"
2) "flight"
  • sunion聯合多個set並返回它們的合集
> 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 zrange

有序集合(sorted set)相似集合,不過它每一個元素有一個關聯值,經過這個關聯值對元素進行排序。

  • zadd爲一個有序集合添加元素
> 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相似於lrange,查看sorted set元素。接受兩個參數,開始index和結尾index,若是結尾index爲-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操做:hset & hget & hgetall & hmset & hincrby & hdel

hash 是一個string類型的field和value的映射表,hash特別適合用於存儲對象。

  • hset添加值
> hset user name "tenny"
(integer) 1
> hset user email "tenny@example.com"
(integer) 1
> hset user password "cutepanda"
(integer) 1
  • hget獲取值
> hget user name
"tenny"
  • hgetall獲取全部值
> hgetall user
1) "name"
2) "tenny"
3) "email"
4) "tenny@example.com"
5) "password"
6) "cutepanda"
  • hmset一次性設置多個值
> 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"
  • hincrby增長數值型域的值
> hset user visits 10
(integer) 1
> hincrby user visits 1
(integer) 11
> hincrby user visits 1
(integer) 12
  • hdel刪除指定的域
> 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中文官方網站瞭解更多。

相關文章
相關標籤/搜索