天天看點

Redis學習一(基礎入門).

一、前言

    Redis是一個開源的使用ANSI C語言編寫、遵守BSD協定、支援網絡、可基于記憶體亦可持久化的日志型、key-Value 的資料庫、并提供多種語言的API。

    通常,Redis 将資料存儲于記憶體中,或被配置為使用虛拟記憶體。通過兩種方式可以實作資料持久化:使用截圖的方式,将記憶體中的資料不斷寫入磁盤;或使用類似 MySQL 的日志方式,記錄每次更新的日志。前者性能較高,但是可能會引起一定程度的資料丢失;後者相反。

    解釋了為什麼選用6379作為預設端口,因為6379在手機按鍵上MERZ對應的号碼,而MERZ取自意大利歌女Alessia Merz的名字。

二、特點

  • 支援資料的持久化,可以将記憶體中的資料儲存到磁盤中,重新開機的時候可以再次加載進行使用。
  • 豐富的資料類型存儲:String、list、set、zset、hash。
  • 支援資料的備份,即master-slave模式的資料的備份。
  • 性能極高 – Redis能讀的速度是110000次/s,寫的速度是81000次/s。
  • 所有的操作都是基于原子性的。

三、資料對象

  • String

--redis的String可以包含任何資料,比如jpg圖檔或者序列後的對象,一個key最大能存儲512MB。

  • Hash

--hash 是一個String類型的field 和 value 的映射表,hash 特别适合用于存儲對象。每個hash可以存儲2^32-1鍵值對 。

  • list

--Redis 清單是簡單的字元串清單,按照插入的順序可以在清單的頭部(左邊)或者尾部(右邊)添加元素。

  • set

--Redis的Set是String類型的無序集合。集合是通過hash表實作的,是以。添加、删除、查找的複雜度都是O(1)。

  • zset

--zset 和 set一樣也是String的類型元素的集合,且不允許重複的隊員,不同的是每個元素都會關聯一個double類型的score。redis正是通過score來為集合中的成員進行從小到大的排序。分數(score)可以重複。

添加元素到集合,元素在集合中存在則對應更新相應的score。

四、安裝

1、Window

--服務端

  1、window下載下傳位址:

https://github.com/MicrosoftArchive/redis/releases

  2、打開一個 cmd 視窗 使用cd指令切換目錄 E:\redis 運作 redis-server.exe redis.windows.conf

--用戶端

  1、打開一個 cmd 視窗 使用cd指令切換目錄 E:\redis 運作 redis-cli.exe -h 127.0.0.1 -p 6379 -a 'mypass'

  2、set myKey abc / get myKey

2、Linux

  1、 wget http://download.redis.io/releases/redis-2.8.17.tar.gz

  2、 tar -zxvf redis-2.8.17.tar.gz redis-2.8.17

  3、 cd redis-2.8.17

  4、 make

  5、 cd src

  6、 ./redis-server redis.conf

  1、 cd src

  2、 ./redis-cli

  redis> set foo bar

  OK

  redis> get foo

  "bar"

五、指令

1、String

-- set key value 儲存key和value。

-- get key 根據key得到value。

2、Hash

-- hmset myhash key1 val1 key2 val2 存儲hash值

-- hget myhash key1 根據hash中的某個key得到value

-- hgetall myhash 得到hash中的所有值

-- HDEL key field1 [field2] 删除一個或多個哈希字段

-- HKEYS key 擷取所有哈希表中的字段

-- HLEN key 擷取哈希字段數

3、List

-- lpush key val 向清單左邊插入元素

-- lpop key 從清單左邊移出元素

-- rpush key val 向清單右邊插入元素

-- rpop key 從清單右邊移出元素

-- rpushx key value 為已存在的清單添加值

-- LRANGE key start stop 擷取清單指定範圍内的元素

-- lindex key index 通過索引擷取清單中的元素

4、Set

-- sadd key value 添加元素

-- smembers key 根據key獲得集合中的所有成員

-- scard key 擷取集合的成員數

-- sdiff key1 key2 傳回給定所有集合的差集(key2的集合相對于key1集合的差集)

-- sunion 傳回給定集合的并集

-- smove source des member 把member從source集合到des集合

-- sdiffstore des key1 key2 傳回給定所有集合的差集,并存儲在des中

-- srandmember key count 傳回集合中一個或多個随機數

-- spop key1 移除并傳回集合中的一個随機元素

-- sismember key mem 判斷mem元素是否存在

5、Zset

-- zadd page 0 123

-- zadd page 1 234

-- zrangebyscore page 0 10

6、通用

-- 删除key:DEL key

-- 檢視所有的key:keys *

-- 序列化給定key,并傳回被傳回的值:DUMP key

-- 檢查給定key是否存在:EXISTS key

-- 為key設定過期時間:EXPIRE key seconds

-- 為key設定過期時間(時間戳):EXPIREAT key timestamp

-- 為key設過期時間(毫秒):PEXPIRE key milliseconds

-- 查找所有符合給定模式的key:KEYS pattern

-- 移除key的過期時間,key将持久儲存:persist key

-- 以毫秒為機關傳回key的剩餘過期時間:PTTL key

-- 傳回key所存儲的值得類型:TYPE key

HyperLogLog:

       -- 添加指定元素到HyperLogLog中:PFADD key element

       -- 傳回給定的HyperLogLog的基數估計值:PFCOUNT key

       -- 将多個HyperLogLog 合并為一個HyperLogLog:PFMERGE destkey sourcekey

訂閱指令:

      -- 訂閱一個或多個符合給定模式的頻道:psubscribe pattern

      -- 退訂一個或多個符合給定模式的頻道:punsubscribe pattern

      -- 檢視訂閱與釋出系統狀态:pubsub subcommand

      -- 将資訊釋出到指定的頻道:publish channel message

      -- 訂閱給定的一個或多個頻道的資訊:subscribe channel

      -- 退訂給定的頻道:unsubscribe channel