1. 程式人生 > >day67_Redis學習筆記_01

day67_Redis學習筆記_01

課程計劃

  • 1、Redis的介紹
    • a) 什麼是NoSql
    • b) NoSql的分類
    • c) 什麼是Redis
    • d) Redis的歷史發展
    • e) Redis的應用場景
  • 2、Redis服務端的安裝(重點)
  • 3、Redis客戶端的使用
    • a) redis自帶客戶端(命令列)
    • b) 圖形介面的客戶端(瞭解)
    • c) Java客戶端Jedis(重點)
  • 4、Redis的資料型別(重點)
    • a) String型別
    • b) 雜湊型別(Map型別)
    • c) List型別(列表型別)
    • d) Set型別(集合型別)
    • e) SortedSet型別(zset型別)
  • 5、keys命令(瞭解)
  • 6、Redis的持久化方案
    • a) RDB方式(預設)
    • b) AOF方式
  • 7、Redis的主從複製
  • 8、Redis的叢集(重點)
  • 9、Jedis連線Redis叢集

1、Redis的介紹

1.1、什麼是NoSql

為了解決高併發、高可擴充套件、高可用、大資料儲存問題而產生的資料庫解決方案,就是NoSql資料庫。NoSQL,泛指非關係型的資料庫,NoSQL即Not-Only SQL,它可以作為關係型資料庫的良好補充

1.2、Nosql的分類

鍵值(Key-Value)儲存資料庫:  相關產品:Tokyo Cabinet/Tyrant、Redis

、Voldemort、Berkeley DB  典型應用:內容快取,主要用於處理大量資料的高訪問負載  資料模型:一系列鍵值對  優勢:快速查詢  劣勢:儲存的資料缺少結構化(現在通過Redis資料型別得到解決)列儲存資料庫:  相關產品:Cassandra、HBase、Riak  典型應用:分散式的檔案系統  資料模型:以列簇式儲存,將同一列資料存在一起  優勢:查詢速度快,可擴充套件性強,更容易進行分散式擴充套件  劣勢:功能相對侷限文件型資料庫:  相關產品:CouchDB、MongoDB  典型應用:Web應用(與Key-Value類似,Value是結構化的),比如:儲存日誌  資料模型:一系列鍵值對  優勢:資料結構要求不嚴格  劣勢:查詢效能不高,而且缺乏統一的查詢語法圖形(Graph)資料庫:
  相關資料庫:Neo4J、InfoGrid、Infinite Graph  典型應用:社交網路、微信平臺  資料模型:圖結構  優勢:利用圖結構相關演算法。  劣勢:需要對整個圖做計算才能得出結果,不容易做分散式的叢集方案。

1.3、什麼是Redis

  Redis是用C語言開發的一個開源的高效能鍵值對(key-value)資料庫。它通過提供多種鍵值資料型別來適應不同場景下的儲存需求,目前為止Redis支援的鍵值資料型別如下:  String字串型別  Map雜湊型別  List列表型別  Set集合型別  SortedSet有序集合型別

1.4、Redis的歷史發展

  2008年,義大利的一家創業公司Merzia推出了一款基於MySQL的網站實時統計系統LLOOGG,然而沒過多久該公司的創始人Salvatore Sanfilippo便對MySQL的效能感到失望,於是他決定親自為LLOOGG量身定做一個數據庫,並於2009年開發完成,這個資料庫就是Redis。不過Salvatore Sanfilippo並不滿足只將Redis用於LLOOGG這一款產品,而是希望更多的人使用它,於是在同一年Salvatore Sanfilippo將Redis開源釋出,並開始和Redis的另一名主要的程式碼貢獻者Pieter Noordhuis一起繼續著Redis的開發,直到今天。  Salvatore Sanfilippo自己也沒有想到,短短的幾年時間,Redis就擁有了龐大的使用者群體。Hacker News在2012年釋出了一份資料庫的使用情況調查,結果顯示有近12%的公司在使用Redis。國內如新浪微博、街旁網、知乎網,國外如GitHub、Stack Overflow、Flickr等都是Redis的使用者。  VMware公司從2010年開始贊助Redis的開發,Salvatore Sanfilippo和Pieter Noordhuis也分別在3月和5月加入VMware,全職開發Redis。

1.5、Redis的應用場景

  1、快取(資料查詢、短連線、新聞內容、商品內容等等)。(最多使用)  2、分散式叢集架構中的session分離。  3、聊天室的線上好友列表。  4、任務佇列。(秒殺、搶購、12306等等)  5、應用排行榜。  6、網站訪問統計。  7、資料過期處理(可以精確到毫秒)。

2、Redis服務端的安裝(重點)

2.1、Redis的下載

  • 官網地址:http://redis.io/
  • 最新版本為:redis-5.0.0
  • 本課程使用:redis-3.0.0
  • 下載地址:http://download.redis.io/releases/redis-3.0.0.tar.g

2.2、Redis的安裝

Redis是C語言開發,建議在linux上執行,本教程使用Centos7作為安裝環境。

  • 第一步:在VMware中安裝CentOS7(參考Linux教程中的安裝虛擬機器)
  • 第二步:在Linux下安裝gcc環境(該步驟可以省略,CentOS中預設自帶C環境),但是建議還是手動安裝下,需要聯網,安裝命令如下:  [[email protected] ~]# yum install gcc-c++安裝成功截圖:
  • 第三步:將下載的Redis原始碼包上傳到Linux伺服器中【注意:SecureCRT需要切換到sftp視窗,步驟:選中連線視窗右鍵“連線SFTP會話”,直接拖拽檔案至視窗中,回車】  sftp> put -r "E:\學習資料\java\java就業班\17、第十七階段redis(1天)\redis\res\redis-3.0.0.tar.gz"
  • 第四步:返回到連線視窗,解壓縮redis原始碼包  [[email protected] ~]# tar -zxf redis-3.0.0.tar.gz
  • 第五步:編譯redis原始碼  [[email protected] ~]# cd redis-3.0.0/  [[email protected] redis-3.0.0]# make
  • 第六步:安裝redis  [[email protected] redis-3.0.0]# make install PREFIX=/usr/local/redis
  • 第七步:檢視是否安裝成功  [[email protected] redis-3.0.0]# cd /usr/local/redis/  [[email protected] redis]# ll

2.3、Redis的啟動

2.3.1、前端啟動

  • 前端啟動的命令:  [[email protected] bin]# ./redis-server
  • 前端啟動的關閉命令:  強制關閉(非法關閉):Ctrl+c  正常關閉(需要通過其他視窗):[[email protected] bin]# ./redis-cli shutdown
  • 啟動介面:
  • 前端啟動的問題:  ssh命令視窗關閉,則redis-server程式結束,即一旦客戶端關閉,則redis服務也停掉。不推薦使用此方法。

2.3.1、後端啟動

  • 第一步:將虛擬機器中/root目錄下redis原始碼包中的redis.conf配置檔案複製到虛擬機器/usr/local/redis/bin/目錄下  方式一:[[email protected] bin]# cp /root/redis-3.0.0/redis.conf /usr/local/redis/bin/  方式二:[[email protected] bin]# cp /root/redis-3.0.0/redis.conf ./
  • 第二步:修改redis.conf,將daemonize由no改為yes  [[email protected] bin]# vim redis.conf
  • 第三步:執行命令,後端啟動redis  [[email protected] bin]# ./redis-server redis.conf
  • 第四步:檢視是否啟動成功,通過檢視程序號
  • 關閉後端啟動的方式:  強制關閉:[[email protected] bin]# kill -9 7272  正常關閉:[[email protected] bin]# ./redis-cli shutdown
  • 在專案中,建議使用正常關閉。因為redis作為快取來使用的話,是將資料儲存到記憶體中,  如果使用正常關閉,則會將記憶體資料持久化到本地之後,再關閉。  如果使用強制關閉,則不會進行持久化操作,可能會造成部分資料的丟失。

3、Redis客戶端的使用

3.1、redis自帶的客戶端(命令列)

  • 先啟動服務端命令:[[email protected] bin]# ./redis-server redis.conf
  • 再啟動客戶端命令:[[email protected] bin]# ./redis-cli -h 127.0.0.1 -p 6379  -h:指定訪問的redis伺服器的ip地址  -p:指定訪問的redis伺服器的port埠
  • 如果不指定主機和埠也可以  即可以寫成:[[email protected] bin]# ./redis-cli  使用預設配置:預設的ip【127.0.0.1】,預設的port【6379】
  • 關閉redis客戶端的方式:  方式一:Ctrl+c  方式二:127.0.0.1:6379> quit
  • 進行資料測試:  127.0.0.1:6379> set s1 hello  OK  127.0.0.1:6379> get s1  "hello"

3.2、圖形介面客戶端(瞭解)

  • 安裝檔案位置:
  • 安裝之後,開啟如下介面:
  • 遠端連線redis服務:
  • 不能夠連線上redis伺服器,為什麼呢?
  • 原因:埠被攔截,需要關閉或者修改虛擬機器的防火牆配置。(注意:實際開發中:只能修改防火牆配置,並不是關閉!)CentOS7預設的防火牆不是iptables,而是firewalld。我們可以試一下systemctl stop firewalld關閉防火牆,但是不推薦該方式。如果是iptables,就vim /etc/sysconfig/iptables修改配置即可。詳細的過程,博主以後會整理補充上。本博主的是CentOS7,防火牆使用的是firewalld,我們使用命令的方式來新增埠(修改後需要重啟firewalld服務):  [[email protected] ~]# cd /etc/firewalld/zones/  [[email protected] zones]# firewall-cmd --permanent --add-port=6379/tcp   [[email protected] zones]# service firewalld restart  Redirecting to /bin/systemctl restart firewalld.service  [[email protected] zones]#
  • 再次使用redis圖形介面客戶端連線redis伺服器,連線成功,如下圖所示:
  • 注意:預設一共是16個數據庫,每個資料庫之間是相互隔離。資料庫的數量是在redis.conf中配置的
  • 切換資料庫使用命令:select 資料庫編號,就可以選擇指定的資料庫來使用,索引從0開始,示例如下  127.0.0.1:6379> select 15  OK  127.0.0.1:6379[15]>

3.3、Java客戶端Jedis(重點)

3.3.1、jedis介紹

  • Redis不僅是使用命令來操作,現在基本上主流的語言都有客戶端支援,比如java、C、C#、C++、php、Node.js、Go等。
  • 在官方網站裡羅列一些Java的客戶端,有Jedis、Redisson、Jredis、JDBC-Redis、等其中官方推薦使用JedisRedisson。 在企業中用的最多的就是Jedis,下面我們就重點學習下Jedis。
  • Jedis同樣也是託管在github上,地址:https://github.com/xetorthio/jedis

3.3.2、新增jar包

3.3.3、通過單例項連線redis伺服器

建立一個普通的java專案,匯入jar包測試程式碼如下:

    /**     * 通過單例項連線redis伺服器     */    @Test    public void testJedisClient() {        // 建立一個Jedis的連線        Jedis jedis = new Jedis("192.168.5.128"6379);        // 選擇資料庫        jedis.select(2);        // 執行redis命令        jedis.set("s4""曉藝,你還好嗎?");        // 從redis中取值        String result = jedis.get("s4");        // 列印結果        System.out.println(result);        // 關閉連線        jedis.close();    }

3.3.4、通過連線池連線redis伺服器

測試程式碼如下:

    /**     * 通過連線池連線redis伺服器     */    @Test    public void testJedisPool() {        // 建立一個連線池物件        JedisPool jedisPool = new JedisPool("192.168.5.128"6379);        // 從連線池中獲取jedis會話物件        Jedis jedis = jedisPool.getResource();        String result = jedis.get("s1");        System.out.println(result);        // 關閉連線        jedis.close();        // 關閉連線池        jedisPool.close();    }

3.3.5、spring整合jedisPool(自學)

新增spring的jar包配置spring配置檔案applicationContext.xmlapplicationContext.xml

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"    xmlns:context="http://www.springframework.org/schema/context"    xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"    xsi:schemaLocation="http://www.springframework.org/schema/beans         http://www.springframework.org/schema/beans/spring-beans-3.2.xsd         http://www.springframework.org/schema/mvc         http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd         http://www.springframework.org/schema/context         http://www.springframework.org/schema/context/spring-context-3.2.xsd         http://www.springframework.org/schema/aop         http://www.springframework.org/schema/aop/spring-aop-3.2.xsd         http://www.springframework.org/schema/tx         http://www.springframework.org/schema/tx/spring-tx-3.2.xsd ">    <!-- 連線池配置 -->    <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">        <!-- 最大連線數 -->        <property name="maxTotal" value="30" />        <!-- 最大空閒連線數 -->        <property name="maxIdle" value="10" />        <!-- 每次釋放連線的最大數目 -->        <
            
           

相關推薦

day67_Redis學習筆記_01

課程計劃 1、Redis的介紹 a) 什麼是NoSql b) NoSql的分類 c) 什麼是Redis d) Redis的歷史發展 e) Redis的應用場景 2、Redis服務端的安裝(重點) 3、Redis客戶端的使用 a) redis自帶客戶端(命令列) b)

React學習筆記_01

壓縮 替換 log -s 直接 快速構建 使用 cal font 使用Facebook的create-react-app快速構建React開發環境 前言: create-react-app:來自Facebook官方的零配置命令行工具 create-react-app是

Ajax學習筆記_01

通過 xmlhttp orm imp 函數 java AD 交互 thead Ajax是一種方法,而不是一種編程語言。語言的話,用js就足夠了。 首先需要創建一個XMLHttpRequest對象,這個對象的方法包括: abort(); getAllResponseHe

Flask_學習筆記_01

公司有一哥們成立一個Python學習小組,於是果斷加入,雖然講的跳度比較大,但是還是學了點知識的。之前自學過一段時間Python,有點基礎。聽到要講Flask的時候,就有點感興趣了,說是比較輕量級的Web開發框架,嘗試了一下,確實上手比較快。由於也是剛入門,所以沒有資格對其評價,先玩一段時間再說吧。 Fla

day67_Redis學習筆記_03

5、keys命令(瞭解) 5.1、常用命令(自學) (1)keys 返回滿足給定pattern的所有key示例:    127.0.0.1:6379> keys *    

day61_Mybatis學習筆記_01

今天內容安排: 1、mybatis的介紹 2、分析原生態jdbc程式中存在的問題 3、mybatis的框架原理(重點) 4、入門程式 訂單商品案例(使用者表) 5、Mybatis開發dao的方

Java學習筆記_01

Java程式三步走 原始檔(格式為.java檔案) 編譯器轉化(格式為.class檔案) 直譯器轉化(轉化為機器語言) 第一個java程式 建立檔案javatest.java 編輯程式碼: public class javates

day45_Webservice學習筆記_01

一、課程安排 Webservice就是一種遠端呼叫技術,它的作用就是從遠端系統中獲取業務資料。     客戶端通過網路通訊協議訪問服務端,網路協議包括TCP和UDP兩大通訊協議:    TCP是一種面向連線的協議,提供可靠的資料傳輸,一般服務質量要求比較高的情況,使用這個協議。TCP支援的應用協議主要

day63_SpringMVC學習筆記_01

1、JAVAEE體系結構 JAVAEE體系結構圖如下所示: 2、什麼是springmvc? 什麼是mvc? Model1 Model2 SpringMVC是什麼? SpringMVC是一個web層mvc框架,類似struts2。 SpringMVC和

Robot Operating System (ROS)學習筆記4---語音控制

sla 語音 出現 tput http 學習 process 輸入 ubun 搭建環境:XMWare Ubuntu14.04 ROS(indigo) 轉載自古月居 轉載連接:http://www.guyuehome.com/260 一、語音識別包 1、安裝

MySQL學習筆記(六)—— MySQL自連接

概念 cor 子查詢 ron 表操作 例子 質量 _id order by 有的時候我們需要對同一表中的數據進行多次檢索,這個時候我們可以使用之前學習過的子查詢,先查詢出需要的數據,再進行一次檢索。 例如:一張products表,有產品id,供應商id(vend_

jquery 深入學習筆記之中的一個 (事件綁定)

color 動態 name his pan mouseover this pre con 【jquery 事件綁定】 1、加入元素事件綁定 (1) 加入事件為當前元素 $(‘p‘).on(‘click‘,function(){ //code here ..

AngularJS入門學習筆記

rect directive 技術分享 attr 兩個 ava 內容 module 大括號 首先聲明: 本博客源自於學習:跟我學AngularJs:AngularJs入門及第一個實例。通過學習,我自己的一些學習筆記。 1.AngularJS的一些基本特性 (1)使用雙大括號

Python學習筆記-2017.5.4

列表 lin 覆蓋範圍 復習 處理 pytho 內部 global txt 本文章記錄學習過程中的細節和心得: 復習所學課程: 1、文件的操作:   打開文件,對文件的操作打開方式有兩種:   第一種:      f = open("test.txt", "r")#以只讀

SAS學習筆記之函數應用

不能 oracle 理解 資料 oracl 函數應用 特殊 put acl 今天在做數據需求的時候遇到一些問題,因為不能夠在數據庫裏面做,僅僅好在SAS裏面實現。這就遇到了一些麻煩,須要使用一些函數實現部分功能,如查找字段中某個特殊字符出現的次數,查找某個字符的位置等,

OpenCV2學習筆記(十五):利用Cmake高速查找OpenCV函數源代碼

one 生成 img log 分享 lan 學習筆記 全部 modules 在使用OpenCV時,在對一個函數的調用不是非常了解的情況下,通常希望查到該函數的官方聲明。而假設想進一步研究OpenCV的函數,則必須深入到源碼。在VS中我們能夠選中想要查

avalonjs 學習筆記1---checkbox

nod item ack lex server ini npm 學習 define 一、vscode 安裝使用 1.vs code+node.js下載安裝 2.在node.js command prompt 中運行 npm install -g live-server 3

Linux學習筆記(三):系統執行級與執行級的切換

查看 用戶操作 回車 water hat ntsysv tde 文件表 config 1.Linux系統與其它的操作系統不同,它設有執行級別。該執行級指定操作系統所處的狀態。Linux系統在不論什麽時候都執行於某個執行級上,且在不同的執行級上執行的程序和服務都不同,所要

Principle of Computing (Python)學習筆記(7) DFS Search + Tic Tac Toe use MiniMax Stratedy

ide out generate depth sku color ati cond with 1. Trees Tree is a recursive structure. 1.1 math nodes https://class.coursera.org/prin

Java程序猿的JavaScript學習筆記(12——jQuery-擴展選擇器)

type write number article mat 我們 content ace val 計劃按例如以下順序完畢這篇筆記: Java程序猿的JavaScript學習筆記(1——理念) Java程序猿的JavaScript學習筆記(2——屬性復制和繼承) Jav