Redis 學習筆記

簡介

  • Redis 是徹底開源免費的,遵照BSD協議,是一個高性能的key-value數據庫。redis

  • Redis支持數據的持久化,能夠將內存中的數據保持在磁盤中,重啓的時候能夠再次加載進行使用。數據庫

  • Redis支持數據的備份,即master-slave模式的數據備份。安全

    Redis Desktop Manager 電腦客戶端管理軟件 https://redisdesktop.com/bash


優點

  • 性能極高: Redis能讀的速度是110000次/s,寫的速度是81000次/s
  • 豐富的數據類型:Redis支持二進制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 數據類型操做。
  • 原子性:Redis的全部操做都是原子性的,同時Redis還支持對幾個操做全並後的原子性執行。
  • 豐富的特性:支持 publish/subscribe, 通知, key 過時等等特性。

數據結構

  • 字符串 - String

string類型是二進制安全的。意思是redis的string能夠包含任何數據。好比jpg圖片或者序列化的對象 。數據結構

string類型是Redis最基本的數據類型,一個鍵最大能存儲512MB。性能

set key value [EX seconds] [PX milliseconds] [NX|XX]
get key
    
例:
127.0.0.1:6379> set string 'hello'
OK
127.0.0.1:6379> get string 
"hello"
複製代碼
  • 哈希 - Hash

Redis hash 是一個鍵值對集合。ui

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

每一個 hash 能夠存儲 232 - 1 鍵值對(40多億)。code

hset key field value    
hget key field
hgetall key

hmset key field value [field value ...]
hmget key field [field ...]

例:
127.0.0.1:6379> hset hash name 'redis'
(integer) 1   -- 返回添加hash的鍵值對數
127.0.0.1:6379> hget hash key2
"value3"
127.0.0.1:6379> hgetall hash
1) "key2"
2) "value3"
3) "name"
4) "redis"
127.0.0.1:6379> hmset hash age 24 gender male
OK
127.0.0.1:6379> hmget hash key2 name
1) "value3"
2) "redis"
複製代碼

列表 List

Redis 列表是簡單的字符串列表,按照插入順序排序。你能夠添加一個元素導列表的頭部(左邊)或者尾部(右邊)。對象

列表最多可存儲 2^32 - 1 元素 (4294967295, 每一個列表可存儲40多億)。

lpush key value [value ...]
rpush key value [value ...]
lrange key start stop

例:
127.0.0.1:6379> lpush userlist user1
(integer) 1
127.0.0.1:6379> rpush userlist user2 user3
(integer) 3  -- 返回 list的大小
127.0.0.1:6379> lrange userlist 0 -1
1) "user1"
2) "user2"
3) "user3"    
複製代碼

集合 -- Set

Redis的Set是string類型的無序集合。

集合是經過哈希表實現的,因此添加,刪除,查找的複雜度都是O(1)

根據集合內元素的惟一性,第二次插入的元素將被忽略。

集合中最大的成員數爲 2^32 -1(4294967295,每一個集合可存儲40多億個成員)

sadd key member [member ...]
smembers key

例:
127.0.0.1:6379> sadd set card1
(integer) 1
127.0.0.1:6379> sadd set card1
(integer) 0
127.0.0.1:6379> smembers set
1) "item2"
2) "item3"
3) "card1"
複製代碼

有序集合 Zset

Redis zset 和 set同樣也是string類型元素的集合,且不容許重複的成員。

不一樣的是每一個元素都會關聯一個double類型的分數。redis正是經過分數來爲集合中的成員進行從小到大的排序。

zset的成員是惟一的,但分數(score)卻能夠重複。

zadd key [NX|XX] [CH] [INCR] score member [score member ...]
zrange key start stop [WITHSCORES]
zrangebyscore key min max [WITHSCORES] [LIMIT offset count]

例:
127.0.0.1:6379> zadd xiaoming 97 math
(integer) 1
127.0.0.1:6379> zadd xiaoming 98 chinese
(integer) 1
127.0.0.1:6379> zrange xiaoming  0 10 withscores
1) "math"
2) "97"
3) "chinese"
4) "98"
127.0.0.1:6379> zrangebyscore xiaoming 98 100
1) "chinese"
複製代碼
相關文章
相關標籤/搜索