48-Redis介紹

Redis內(nèi)存數(shù)據(jù)庫

背景

隨著互聯(lián)網(wǎng)+大數(shù)據(jù)時代的來臨斑响,傳統(tǒng)的關(guān)系型數(shù)據(jù)庫已經(jīng)不能滿足中大型網(wǎng)站日益增長的訪問量和數(shù)據(jù)量本冲。這個時候就需要一種能夠快速存取數(shù)據(jù)的組件來緩解數(shù)據(jù)庫服務(wù)I/O的壓力乃正,來解決系統(tǒng)性能上的瓶頸伞广。

數(shù)據(jù)庫的發(fā)展歷史

1.在互聯(lián)網(wǎng)+大數(shù)據(jù)時代來臨之前稳其,企業(yè)的一些內(nèi)部信息管理系統(tǒng)换衬,一個單個數(shù)據(jù)庫實例就能滿足系統(tǒng)的需求
單數(shù)據(jù)庫實例

2.隨著系統(tǒng)訪問用戶的增多,數(shù)據(jù)量的增大亡蓉,單個數(shù)據(jù)庫實例已經(jīng)滿足不了系統(tǒng)的讀取需求
緩存(memcache)+單數(shù)據(jù)庫實例

3.緩存可以緩解系統(tǒng)的讀取壓力晕翠,但是數(shù)據(jù)量的寫入壓力持續(xù)增大,
緩存+主從數(shù)據(jù)庫+讀寫分離

4.數(shù)據(jù)量再次增大,讀寫分離以后淋肾,主數(shù)據(jù)庫的寫庫壓力出現(xiàn)瓶頸硫麻、
緩存+主從數(shù)據(jù)庫集群+讀寫分離+分庫分表

5.互聯(lián)網(wǎng)+大數(shù)據(jù)時代來臨,關(guān)系型數(shù)據(jù)庫不能很好的存取一些并發(fā)性高樊卓,實時性高的拿愧,并且數(shù)據(jù)格式不固定的數(shù)據(jù)。
nosql+主從數(shù)據(jù)庫集群+讀寫分離+分庫分表

Redis是什么碌尔?

Redis是一個高性能的浇辜,開源的,C語言開發(fā)的唾戚,鍵值對存儲數(shù)據(jù)的nosql數(shù)據(jù)庫柳洋。

NoSQL:not only sql,泛指非關(guān)系型數(shù)據(jù)庫 Redis/MongoDB/Hbase Hadoop

關(guān)系型數(shù)據(jù)庫:MySQL叹坦、oracle熊镣、SqlServer

Redis特性

  • Redis支持?jǐn)?shù)據(jù)的持久化,可以將內(nèi)存中的數(shù)據(jù)保存在磁盤中立由,重啟的時候可以再次加載進(jìn)行使用
  • Redis不僅僅支持簡單的key-value類型的數(shù)據(jù),同時還提供List序厉,set等數(shù)據(jù)類型
  • Redis支持?jǐn)?shù)據(jù)的備份

Redis有什么用锐膜?

Redis的主要作用:快速存取

Redis應(yīng)用場景

點贊/秒殺/直播平臺的在線好友列表/商品排行榜/單點登錄

Redis怎么用?

官網(wǎng)地址:https://redis.io/
命令地址:http://doc.redisfans.com/
應(yīng)用版本:3.0.4
Redis的五大數(shù)據(jù)類型以及應(yīng)用場景
string/list/set/hash/zset

Redis的安裝

sudo apt-get install redis-server

查看幫助命令
redis-server --help

編輯Redis配置文件
sudo vim /etc/redis/redis.conf
將daemonize no改為 daemonize yes保存退出

啟動
redis-server
后臺啟動
redis-server &

打開服務(wù)
sudo service redis start

關(guān)閉服務(wù)
sudo service redis stop

Redis的配置文件

/etc/redis/redis.conf

當(dāng)redis作為守護(hù)進(jìn)程運行的時候弛房,它會寫一個 pid 到 /var/run/redis.pid 文件里面道盏。
daemonize no

監(jiān)聽端口號,默認(rèn)為 6379文捶,如果你設(shè)為 0 荷逞,redis 將不在 socket 上監(jiān)聽任何客戶端連接。
port 6379

設(shè)置數(shù)據(jù)庫的數(shù)目粹排。
databases 16

根據(jù)給定的時間間隔和寫入次數(shù)將數(shù)據(jù)保存到磁盤
下面的例子的意思是:
900 秒內(nèi)如果至少有 1 個 key 的值變化种远,則保存
300 秒內(nèi)如果至少有 10 個 key 的值變化,則保存
60 秒內(nèi)如果至少有 10000 個 key 的值變化顽耳,則保存
 
save 900 1
save 300 10
save 60 10000

監(jiān)聽端口號坠敷,默認(rèn)為 6379,如果你設(shè)為 0 射富,redis 將不在 socket 上監(jiān)聽任何客戶端連接膝迎。
port 6379

Redis默認(rèn)只允許本地連接,不允許其他機器連接
bind 127.0.0.1

更多配置文件:https://www.cnblogs.com/kreo/p/4423362.html

Redis數(shù)據(jù)庫簡單使用

redis是分布式的內(nèi)存數(shù)據(jù)庫

/usr/bin/redis-benchmark文件可以測試機器性能

redis讀取速度每秒能達(dá)到10W左右

切換數(shù)據(jù)庫 select 數(shù)據(jù)庫號

DBSIZE      查看當(dāng)前數(shù)據(jù)庫的key數(shù)量
keys *      查看key的內(nèi)容
FLUSHDB     清空當(dāng)前數(shù)據(jù)庫的key的數(shù)量
FLUSHALL    清空所有庫的key(慎用)
exists key   判斷key是否存在 

redis常用五大數(shù)據(jù)類型

redis-key
1.key * 查看所有key
2.exists  key 的名字   判斷key是否存在  
如果存在返回1  不存在返回0  
命令:exists k1
3.move key db  當(dāng)前庫沒有了  被移除了  移動到指定庫中
命令:move k1 2      移動k1  到2號庫
4.expire key  秒數(shù)   過多少秒刪除
5.ttl    time to live  -1表示永不過期   -2表示已過期 
命令:ttl k1   
6.type key 查看你的key是什么類型
命令:type k1  返回 string

1.redis-string

1.string(字符串)

string是redis最基本的類型胰耗,一個key對應(yīng)一個value

string可以包含任何數(shù)據(jù)限次,最大不能超過512M

1.set/get/del/append/strlen
set  ---- 設(shè)置值
get  ---- 獲取值
mset  ---- 設(shè)置多個值
mget  ---- 獲取多個值
append ---- 添加字段
del ---- 刪除
strlen ---- 返回字符串長度

2.incr/decr/incrby/decrby
incr ---- 增加
decr ---- 減少
incrby  ----- 制定增加多少
decrby  ----- 制定減少多少

set k1 26
incr  k1  返回27   遞增加1
decr  k1  返回26   遞減減1
incrby  k1  2   返回28
decrby  k1  2  返回26

set  k3 v3  
incr k3   會報錯!柴灯!增加不能增加字符串

3.getrange/setrange
getrange ---- 獲取指定區(qū)間范圍內(nèi)的值,類似between....and的關(guān)系
setrange ---- 代表從第幾位開始替換,下腳本從零開始
從0 -1表示全部

set k1 juran123
getrange   k1  0   -1       返回 "juran123"
getrange   k1  0   2        返回  jur
setrange   k1  0   xxx      返回    "xxxan123"      

2.redis-list(單值多value)

List(列表)

列表是簡單的字符串列表卖漫,按照插入順序排序费尽,可以添加一個元素列表的頭部(左邊)或者尾部(右邊)
它的底層實際是個鏈表

1.lpush/rpush/lrange
lpush/rpush/lrange ---- 從左/從右/獲取指定長度
lpush list01  1 2 3 4 5  倒序排列
rpush list02  1 2 3 4 5  正序排列
lrange  list01  0  -1  獲取list01 中的所有值

2.lpop/rpop
lpop/rpop ---- 移除最左/最右
lpop list01 刪除元素5
rpop list01 刪除元素1

3.lindex,按照索引下標(biāo)獲得元素(從上到下)
lrange list01 0 -1
lindex list01 1

4.llen,求列表長度
llen list01 

5.lrem key 
刪N個value
lrem list01 2 1   在list01中刪除2個1

6.ltrim key 
ltrim ---- 開始index結(jié)束index,截取指定范圍的值后在賦值給key
ltrim list01 0 2    截取list01 從0到2的數(shù)據(jù)在賦值給list01

7.rpoplpush  list1 list2  將list1中最后一個壓入list2中第一位
lrange list01 0 -1
lrange list02 0 -1
rpoplpush list1 list2

8.lset key index value
lset list01 0 x     將list02中第一位換成x

9.linsert key before/after
linsert list01b  before x php  在x之前加字段php

3.redis-Hash

Hash(哈希)

hash是一個鍵值對集合

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

KV模式不變依啰,但V是一個鍵值對
1.hset/hget/hmset/hmget/hgetall/hdel
設(shè)值/取值/設(shè)值多個值/取多個值/取全部值/刪除值
hset user id 11
hget user id 
hmset customer id 11 name juran age 26
hmget customer id name age      只返回相應(yīng)的值
hgetall   customer              返回全部
hdel user id   刪除id

2.hlen
求哈希長度 
hlen customer   

3.hexists key 
hexists ---- 在key里面的某個值

存在返回1 ,不存在返回0

4.hkeys/hvals
hkeys students
hvals students

5.hincrby/hincrbyfloat
小數(shù)

4.redis-set(不重復(fù)的)

Set(集合)

set是string類型的無序集合

1.sadd/smembers/sismember
sadd/smembers/sismember ---- 添加/查看集合/查看是否存在
sadd set01 1 2 2 3 3  去掉重復(fù)添加
smembers set01   得到set01
sismember set01 1  如果存在返回1  不存在返回0

2.scard
scard ---- 獲取集合里面的元素個數(shù)
scard set01   

3.srem key value 
srem ---- 刪除集合中元素
srem set01 3
SMEMBERS set01   3已經(jīng)被刪除掉

4.srandmember key 
srandmembe ---- 隨機出幾個數(shù)
sadd set02  1 2 3 4 5 6 7 8
srandmember set02  2 

5.spop key 
spop ---- 隨機出棧
spop set01

6.smove key1 key2
sadd set03 x y z 
smove set01 set03 2  將set01中的2 移動到set03中

7.數(shù)學(xué)集合類
sadd set01 1 2 3 4 5
sadd set02 1 2 3 a b
差集
SDIFF set01 set02   返回 4 5 在第一個set中不在第二個set中
交集
SINTER set01 set02   返回 1 2 3
并集
SUNION set01 set02  返回set01 set02 中的值  去掉重復(fù)

5.redis-Zset

Zset(有序集合)

1.zadd/zrange
zadd zset01 60 v1 70 v2 80 v3 90 v4 100 v5
zrange zset01 0 -1 
帶分?jǐn)?shù)返回   withscores

2.zrangebyscore key start end
zrangebyscore key start end----根據(jù)開始結(jié)束來取值
zrangebyscore zset01 60 70

zrangebyscore zset01 60 (90   表示不包含90

zrangebyscore zset01  60 90  limit  1 2 從第一條開始截取2條

3.zrem key 
zrem key value---- 某score下對應(yīng)的value值,作用是刪除元素
zrem zset01 v1  

4.zcard/zcount key score 區(qū)間/zrank key values
zcard   求zset01 總條數(shù)
zcount  zset01 60 90  求60-90個數(shù)
zrank   zset01  v2   返回1  返回對應(yīng)下角標(biāo)店枣,從0開始
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末速警,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子鸯两,更是在濱河造成了極大的恐慌闷旧,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件钧唐,死亡現(xiàn)場離奇詭異忙灼,居然都是意外死亡,警方通過查閱死者的電腦和手機钝侠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進(jìn)店門该园,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人帅韧,你說我怎么就攤上這事里初。” “怎么了忽舟?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵双妨,是天一觀的道長。 經(jīng)常有香客問我叮阅,道長刁品,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任浩姥,我火速辦了婚禮挑随,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘勒叠。我一直安慰自己镀裤,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布缴饭。 她就那樣靜靜地躺著暑劝,像睡著了一般。 火紅的嫁衣襯著肌膚如雪颗搂。 梳的紋絲不亂的頭發(fā)上担猛,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天,我揣著相機與錄音,去河邊找鬼傅联。 笑死先改,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蒸走。 我是一名探鬼主播仇奶,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼比驻!你這毒婦竟也來了该溯?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤别惦,失蹤者是張志新(化名)和其女友劉穎狈茉,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體掸掸,經(jīng)...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡氯庆,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了扰付。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片堤撵。...
    茶點故事閱讀 38,809評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖羽莺,靈堂內(nèi)的尸體忽然破棺而出实昨,到底是詐尸還是另有隱情,我是刑警寧澤禽翼,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布屠橄,位于F島的核電站族跛,受9級特大地震影響闰挡,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜礁哄,卻給世界環(huán)境...
    茶點故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一长酗、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧桐绒,春花似錦夺脾、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至烁竭,卻和暖如春菲茬,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工婉弹, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留睬魂,地道東北人。 一個月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓镀赌,卻偏偏與公主長得像氯哮,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子商佛,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,724評論 2 351

推薦閱讀更多精彩內(nèi)容

  • NOSQL類型簡介鍵值對:會使用到一個哈希表喉钢,表中有一個特定的鍵和一個指針指向特定的數(shù)據(jù),如redis威彰,volde...
    MicoCube閱讀 3,961評論 2 27
  • Nosql概述 在介紹Redis之前出牧,首先先要介紹Nosql的概念。 互聯(lián)網(wǎng)架構(gòu)發(fā)展 在90年代的時候歇盼,計算機訪問...
    COKIDCC閱讀 685評論 0 1
  • 原帖地址:http://www.reibang.com/p/2f14bc570563 redis概述 Redis...
    onlyHalfSoul閱讀 2,159評論 0 28
  • 1 Redis介紹1.1 什么是NoSql為了解決高并發(fā)豹缀、高可擴展伯复、高可用、大數(shù)據(jù)存儲問題而產(chǎn)生的數(shù)據(jù)庫解決方...
    克魯?shù)吕?/span>閱讀 5,274評論 0 36
  • 5邢笙、嬰兒氣質(zhì)的發(fā)展 (1)氣質(zhì)類型學(xué)說 (2)穩(wěn)定性與可變性 一啸如、氣質(zhì)類型學(xué)說 1、托馬斯和切斯:容易型氮惯、困難型叮雳、...
    趙淇竹閱讀 821評論 0 1