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、等其中官方推薦使用
Jedis
和Redisson
。 在企業中用的最多的就是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