Redis記憶體資料庫-基礎知識

来源:https://www.cnblogs.com/zhangxianren/archive/2018/03/10/8540349.html
-Advertisement-
Play Games

Redis是什麼 Redis是一個開源的,高性能,C語言開發的 ,鍵值對(key-value)存儲數據的NOSQL資料庫。 基本概念 NOSQL :Not Only Sql 泛指非關係型資料庫 Redis/ MongoDB/ Hbase 關係型資料庫: mysql/ oracle/ sybase / ...


Redis是什麼

Redis是一個開源的,高性能,C語言開發的 ,鍵值對(key-value)存儲數據的NOSQL資料庫。

基本概念

NOSQL Not Only Sql 泛指非關係型資料庫  Redis/ MongoDB/ Hbase

關係型資料庫: mysql/ oracle/ sybase /sqlServer

資料庫應用的發展歷史

1;在互聯網時代來臨之前 ,企業的一些內部信息管理系統,一個單個的資料庫的實例就可以應付系統的功能需求

單資料庫實例

2:隨著系統訪問用戶的增多 ,數據量的增大,單個資料庫的實例已經滿足不了系統頻繁讀取數據(許可權的驗證,系統的預設配置)的需求 。

緩存 ehCache/MemCached+ 資料庫實例

 

3: 緩存雖然可以緩解資料庫的讀取壓力 ,但是數據量的寫入壓力持續增大 ,這個時候我們需要採取資料庫主從機制進行讀寫分離

緩存 ehCache/MemCached+ 主從資料庫 + 讀寫分離

 

4: 數據量再次增大,讀寫分離以後,主資料庫的寫庫的壓力出現瓶頸

緩存 ehCache/MemCached+ 主從資料庫 + 讀寫分離 +分庫分表

 

5:互聯網和大數據的時代的來林,關係型資料庫已經不能很好的存儲一些併發性大,實時性高,而且格式不固定的數據

Nosql資料庫+主從資料庫 + 讀寫分離 +分庫分表

Redis有什麼用

Redis的主要作用 :

以電商網站為例,Redis在系統架構中的位置

Redis的應用場景

直播平臺 好友列表

新品秒殺/12306搶票  --記錄物品的庫存記錄

電商網站的商品排行  ---利用有序列表存儲商品的銷售情況

網站商品的點贊數/評論數/網站訪問記錄 --高併發 但是記錄不精確

數據過期處理  -redis對數據可以設置生命周期(單點登陸)

分散式集群架構中的session分離

 

Redis怎麼用

官網地址 https://redis.io/

 

 

安裝redis

Linux系統下安裝redis

安裝過程:

  1)安裝編譯器:yum install gcc-c++

  2)下載Redis源碼並上傳到伺服器

  3)解壓Redis壓縮包:tar -zxvf *redis*

  4)進入Redis目錄進行編譯:make

  5)安裝Redis:make PREFIX=/user/local/redis install

  6)將redis.conf拷貝到Redis安裝目錄:cp redis.conf /user/local/redis

  7)進入安裝目錄,更改redis.conf文件:vim redis.conf --> daemonize no 改為 yes

  8)啟動redis後端模式:./bin/redis-server ./redis.conf

 

 

 

Redis的五大數據類型以及應用

String/Hash/List/Set/sorted set

字元串類型 String

列表類型 list

集合類型 set

有序集合類型 sorted set

散列類型 hash

 

讀取速度每秒10000/S

寫入速度8100/S

Key不要過長(占用記憶體 最大可容納數據長度為512M) 不要過短(降低可閱讀性)

 

* String 

K-V格式中 V是一個字元串對象

Set k1 v1

Get k1

Del k1

 

Incr num (自增1 如果沒有設置值預設為1)

Decr num (自減1)

Incrby num 5 (自增5)

Decrby num 5 (自減 5)

Append num 4 (追加4)返回字元串長度位數 *不是數學+ 是拼接

 

應用場景: 秒殺商品/商品點贊

Set mobile_huawei 1000

Decr mobile_huawei

 

 

* Hash

K-V格式中 V是一個Hash類型 其實java裡面的Map<String,object>

Hset student _bluesky id 1

Hset student _bluesky name bluesky

Hset student _bluesky sex boy

 

賦值命令

Hset myhash username summer

Hset myhash age 18

Hmset myhash username admin age 20

 

 

 

取值命令

Hget myhash username

Hget myhash username age

Hgetall myhash

 

刪除命令

Hdel myhash username age

Del myhash (刪除myhash)

Hincrby myhash age 5 (增加5)

 

其他命名

Hexists myhash username 判斷myhash中是否包含username包含返回1否則返回0

Hlen myhash 獲取myhash中的欄位數

Hkeys myhash 獲取所有的 key

Hvals myhash 獲取所有的值

 

應用場景: 電商網站的商品詳細信息

Hmset iphone:0001 id  1 name 6s price 3999 imageurl /pic/iphone.png

Hget  iphone:0001  name

Hgetall iphone:0001

 

 

 

* list

K-V格式中 V是一個list類型 其實java裡面的LinkedList

 

把他看成一個竹子,兩邊是打通了

從左插入記錄  lpush summer_book  1 2 3

從右插入記錄  rpush summer_book  4 5 6

從左彈出記錄  lpop summer_book 1

從右彈出記錄  lpush summer_book 1

列表裡面的記錄順序(竹子)

 

 3  2  1  4  5  6

 

應用場景: 商品的評論

Lpush t_shirt:comment good1/Lpush t_shirt:comment good2/Lpush t_shirt:comment good3

Lrange t_shirt:comment 0 10

 

 

 

Lpush mylist 1 2 3 從左插入記錄

Rpush mylist a b c 從右插入記錄

 

Lrange mylist 開始索引位置 結束索引位置(-1最後一個)

Lpop mylist 左側彈出(相當於刪除)

Rpop mylist 右側彈出(相當於刪除)

Lpush mylist 左側插入

Rpush mylist 右側插入

Lrem mylist 刪除幾個元素 刪除哪個元素

Lset mylist 索引位置 插入的值

Linsert mylist before 哪個值前面 要插入的值

Linsert mylist after 哪個值後面 要插入的值

Rpoplpush 集合1 集合2

 

 

 

 

* Set

K-V格式中 V是一個set類型  set是無序的/set裡面的元素具有唯一性、

Sadd summer_friends blue_sky bigVoice mosheng mike

Sadd maybe_friends blue_sky bigvoice tdd world okyoung

應用場景: 獨立IP進行網站投票 /微信朋友圈的共同好友

 

 

Sadd myset a b c 添加 a b c

不能添加重覆的值

Srem myset a c 移除a c

 

Smembers myset 查看所有值

Sismember myset a 查看集合裡面是否包含a包含返回1 否則返回0

 

Sadd myset2 a b c 差集運算

Sadd myset3 a c 1 交集運算

Sdiff myset2 myset3  myset2 myset3相差的是b

Sinter myset2 myset3  myset2 myset3相交的是a c

Sunion myset2 myset3 並集運算 合併集合 相同的會去掉(值不能重覆)

Scard myset 獲取集合數量

Srandmember myset 隨機獲取集合中的一個值

Sdiffstore myset4 myset2 myset3 myset2 myset3中相差的值放到myset4裡面

Sinterstore myset4 myset2 myset3 myset2 myset3中相交的值放到myset4裡面

Sunionstore myset4 myset2 myset3 myset2 myset3中相並的值放到myset4裡面

 

 

 

* sorted-set 

游戲排名 熱點話題中應用

K-V格式中 V是一個Zset類型  zset是有序的? 怎麼做到有序

 

應用場景: 商品的銷售排行榜

zadd phone_sales  100  huawei  99 iphone  98 vivo  97 oppo

Zrange phone_sales 0 -1 with score  從小到大

Zrevrange phone_sales 0 -1 with score  從大到小

 

 

 

JAVA操作redis ----- jedis

Redis的高級知識: Redis的持久化 Redis的主從 Redis集群

 

 

如有侵權,請聯繫:13212115095

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 本文目錄:1. 配置haproxy需要考慮的事情2. 配置haproxy提供反向代理功能 haproxy是一個非常優秀的負載均衡工具,它的特性非常豐富,功能也非常非常強大,要想好好使用它,將它的功能和性能挖掘出來,多多閱讀官方手冊是必不可少的。 本文提供一個簡單的配置示例,後面將分別開文章詳細解釋它 ...
  • 一、介紹 目的:通過本文瞭解並掌握Linux系統安裝的過程 軟體環境 Linux系統:CentOS7.3 虛擬機:VM12 主機系統:Windows8.0 二、安裝虛擬機 首先,需要下載VMware Workstation軟體,下載完後進行安裝 1,雙擊VM戶,出現歡迎的界面 2,一直點下一步,設置 ...
  • 繼上一篇文章:http://www.cnblogs.com/linhaostudy/p/8515277.html 三、tinymixer調用分析:(tinymixer.log搜索節點:/dev/snd/controlCx) 還是一樣,系統調用從應用層到kernel層,都要通過VFS來到file_op ...
  • 一、數據類型 截圖來源: http://www.runoob.com/mysql/mysql-data-types.html 二、基本語句 1、創建數據表 2、刪除數據表 3、新增數據 4、刪除數據 5、更新數據 6、查詢數據 7、表欄位修改 三、其他函數 1、判斷 2、逗號拼接 3、判空 4、轉換 ...
  • 寫一條SQL語句,求出2門以及2門以上不及格的科目平均分 >要出現2門以及2門以上的學科不及格 >計算該考生所有學科的平均分,不單是,不及格的那幾門 #創建表: 思路一: 求出score < 60的科目數,然後統計平均分 這個結果是錯誤的,原因在於: " 用where過濾了score < 60的科目 ...
  • SELECT * FROM ecs_goods WHERE goods_id = 1;SELECT goods_id, goods_name FROM ecs_goods WHERE goods_id = 1;SELECT goods_id,cat_id,goods_name FROM ecs_go ...
  • 一、hdfs的概念 Hadoop 實現了一個分散式文件系統(Hadoop Distributed File System),簡稱HDFS。 Hadoop是Apache Lucene創始人Doug Cutting開發的使用廣泛的文本搜索庫。它起源於Apache Nutch,後者是一個開源的網路搜索引擎 ...
  • 許多公司隨著業務發展,單資料庫實例已經不能滿足業務需要,需要定期進行數據交換,同步到MongoDB, 或其他位置的MySQL,以分散資料庫的併發壓力。 目前大部分都採用自行開發的方式處理,存在開發成本高,不靈活、維護困難等問題。 目前有一款數據交換軟體TreeSoft資料庫管理系統,可以實現定時的數 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...