1. 程式人生 > >12、高效能web架構之redis介紹與使用

12、高效能web架構之redis介紹與使用

Redis 簡介

Redis 是完全開源免費的,遵守BSD協議,是一個高效能的key-value資料庫。

Redis 與其他 key - value 快取產品有以下三個特點:

  • Redis支援資料的持久化,可以將記憶體中的資料儲存在磁碟中,重啟的時候可以再次載入進行使用。
  • Redis不僅僅支援簡單的key-value型別的資料,同時還提供list,set,zset,hash等資料結構的儲存。
  • Redis支援資料的備份,即master-slave模式的資料備份。

Redis 優勢

  • 效能極高 – Redis能讀的速度是110000次/s,寫的速度是81000次/s 。
  • 豐富的資料型別 – Redis支援二進位制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 資料型別操作。
  • 原子 – Redis的所有操作都是原子性的,意思就是要麼成功執行要麼失敗完全不執行。單個操作是原子性的。多個操作也支援事務,即原子性,通過MULTI和EXEC指令包起來。
  • 豐富的特性 – Redis還支援 publish/subscribe, 通知, key 過期等等特性。

Redis與其他key-value儲存有什麼不同?

Redis有著更為複雜的資料結構並且提供對他們的原子性操作,這是一個不同於其他資料庫的進化路徑。Redis的資料型別都是基於基本資料結構的同時對程式設計師透明,無需進行額外的抽象。

Redis執行在記憶體中但是可以持久化到磁碟,所以在對不同資料集進行高速讀寫時需要權衡記憶體,因為資料量不能大於硬體記憶體。在記憶體資料庫方面的另一個優點是,相比在磁碟上相同的複雜的資料結構,在記憶體中操作起來非常簡單,這樣Redis可以做很多內部複雜性很強的事情。同時,在磁碟格式方面他們是緊湊的以追加的方式產生的,因為他們並不需要進行隨機訪問。

Redis與Memcached的區別?

Redis

Memcached

持久化

不支援持久化

純set、get不如memcached

純set、get效能好

開發都知道

開發都會用

易用

簡單易用

支援多種資料型別

支援型別單一

叢集

依靠magent

有基礎驗證

沒有驗證

tomcat-session-redis

tomcat-session-memcache

Redis的精講,參考這位大神的部落格:

https://blog.csdn.net/hjm4702192/article/details/80518856

  • 安裝部署:

環境準備:一臺CentOS 7.2系統

參考官網:https://redis.io/download

  1. 下載安裝包並解壓安裝:

[[email protected] ~]# yum install gcc tcl -y

[[email protected] ~]# wget http://download.redis.io/releases/redis-4.0.11.tar.gz

[[email protected] ~]# tar zxf redis-4.0.11.tar.gz -C /usr/local/

[[email protected] ~]# cd /usr/local/redis-4.0.11/

[[email protected] redis-4.0.11]# make

[[email protected] redis-4.0.11]# cp utils/redis_init_script /etc/init.d/redis  //複製啟動指令碼

[[email protected] redis-4.0.11]# vi /etc/init.d/redis   //修改啟動指令碼

[[email protected] ~]# grep -v "^#" /etc/init.d/redis  | grep -v "^$"

REDISPORT=6379

EXEC=/usr/local/redis/src/redis-server

CLIEXEC=/usr/local/redis/src/redis-cli

PIDFILE=/var/run/redis_${REDISPORT}.pid

CONF="/etc/redis/${REDISPORT}.conf"

case "$1" in

    start)

        if [ -f $PIDFILE ]

        then

                echo "$PIDFILE exists, process is already running or crashed"

        else

                echo "Starting Redis server..."

                $EXEC $CONF

        fi

        ;;

    stop)

        if [ ! -f $PIDFILE ]

        then

                echo "$PIDFILE does not exist, process is not running"

        else

                PID=$(cat $PIDFILE)

                echo "Stopping ..."

                $CLIEXEC -h 192.168.91.133 -p $REDISPORT shutdown

                while [ -x /proc/${PID} ]

                do

                    echo "Waiting for Redis to shutdown ..."

                    sleep 1

                done

                echo "Redis stopped"

        fi

        ;;

    *)

        echo "Please use start or stop as first argument"

        ;;

esac

[[email protected] redis-4.0.11]# ln -s /usr/local/redis-4.0.11/ /usr/local/redis  //建立軟連線

[[email protected] redis-4.0.11]# mkdir /etc/redis         

[[email protected] redis-4.0.11]# cp redis.conf /etc/redis/6379.conf

2、修改配置檔案:

[[email protected] redis-4.0.11]# vi /etc/redis/redis.conf  //修改配置檔案

daemonize yes  #後臺程序方式改為yes

protected-mode no #禁用它,任何client不用認證即可連線

dir /var/lib/redis_6379    #redis持久化存放的目錄

requirepass yanyb     #生產環境一定修改密碼

bind 192.168.91.133  #改為本機ip地址

logfile "/var/log/redis_6379.log"

[[email protected] redis-4.0.11]# mkdir -p /var/lib/redis_6379   //redis持久化存放的目錄

3、啟動服務:

[[email protected] redis]# /etc/init.d/redis start

檢視日誌報錯:

解決:
第一個警告:
echo 1 > /proc/sys/vm/overcommit_memory  不需要啟機器就生效
第二個警告:
echo 511 > /proc/sys/net/core/somaxconn


overcommit_memory引數說明:
設定記憶體分配策略(可選,根據伺服器的實際情況進行設定)
/proc/sys/vm/overcommit_memory
可選值:0、1、2。
0, 表示核心將檢查是否有足夠的可用記憶體供應用程序使用;如果有足夠的可用記憶體,記憶體申請允許;否則,記憶體申請失敗,並把錯誤返回給應用程序。
1, 表示核心允許分配所有的實體記憶體,而不管當前的記憶體狀態如何。
2, 表示核心允許分配超過所有實體記憶體和交換空間總和的記憶體

Redis的命令參考:http://doc.redisfans.com/

4、測試redis

[[email protected] ~]# /usr/local/redis/src/redis-cli -h 192.168.91.133 -p 6379

192.168.91.133:6379> set yanyb 'OK'

OK

192.168.91.133:6379> set abc 'OK'

OK

192.168.91.133:6379> set 123 'OK'

OK

192.168.91.133:6379> keys *

1) "yanyb"

2) "123"

3) "abc"

192.168.91.133:6379> get yanyb

"OK"

相關推薦

12高效能web架構redis介紹使用

Redis 簡介 Redis 是完全開源免費的,遵守BSD協議,是一個高效能的key-value資料庫。 Redis 與其他 key - value 快取產品有以下三個特點: Redis支援資料的持久化,可以將記憶體中的資料儲存在磁碟中,重啟的時候可以再次載入進行使用。

13高效能web架構用Codis實現Redis分散式叢集

通過codis實現redis叢集 Codis 是一個分散式 Redis 解決方案, 對於上層的應用來說, 連線到 Codis Proxy 和連線原生的 Redis Server 沒有明顯的區別 (不支援的命令列表https://github.com/CodisLabs/

高效能web 架構redis 快取叢集

redis 叢集 介紹 redis是一個key-value記憶體資料庫。它支援儲存的value型別包括字串、list(連結串列)、set(集合)、有序集合和hash(雜湊型別)。這些資料型別都支援push/pop、add/remove, redis支援各種不同方式的排序

2高效能web架構DNS負載均衡(LVS-DR+keepalived實現DNS和web輪詢)

LVS-DR+keepalived+DNS實現DNS高可用性: 一、介紹: 結合上一章的DNS主從複製,按現在大多數公司的需求是滿足不了的。DNS配置雖然簡單易用,但是它在網路中起到了主導作用。 如果客戶端設定的這臺首選DNS伺服器剛好宕機,即使客戶端還設定了備用DNS

6高效能web架構Apche虛擬主機配置

構建web虛擬主機: 一、前言: 虛擬web主機指的是在同一臺伺服器中執行多個web站點,其中的每一個站點實際上並不獨立佔用整個伺服器。因此被稱為“虛擬的”web主機,通過虛擬web主機服務可以充分利用伺服器的硬體資源,從而大大降低了網站構建及執行成本。 使用htt

9高效能web架構壓力測試

使用ab進行對web伺服器壓力測試: 前言: 當我們部署完一臺web伺服器之後,想要知道的這臺伺服器的效能。就要知道他的吞吐率和響應時間分別是多少,怎麼看呢?那就需要對它進行壓力測試。 1)吞吐率/響應時間:requests/sec; 2)壓力測試:使用ab工具進行

7高效能web架構Apche使用虛擬主機實現反向代理

Apache反向代理: 前言介紹:    反向代理(Reverse Proxy)方式是指以代理伺服器來接受internet上的連線請求,然後將請求轉發給內部網路上的伺服器,並將從伺服器上得到的結果返回給internet上請求連線的客戶端,此時代理伺服器對外就表現為一個

11高效能web架構tomcat安全管理規範

Tomcat的常用安全管理規範: 如何修改tomcat的預設路徑: 1、主配置檔案是server.xml ,如何修改tomcat預設訪問路徑: a、建立jsp目錄和index.jsp頁面: [[email protected] ~]# mkdir

高效能web 架構 mysql 讀寫分離

高效能web架構主要保證程式的高可用性和高併發性. 高可用就是 保證程式在99.99%的情況下可以使用,不會因為單機節點故障整體崩潰.  高併發說到底也是為了高可用服務.保證在大量併發的時候服務不會宕機. 高效能web架構主要體現在以下方面 資料庫讀寫分離,因為大

高效能網站架構快取篇—Redis叢集搭建

         看過高效能網站架構之快取篇--Redis安裝配置和高效能網站架構之快取篇--Redis使用配置埠轉發這兩篇文章的,相信你已經對redis有一定的瞭解,並能夠安裝上,進行簡單的使用了,但是在咱們的實際應用中,使用redis肯定不會使用單機版,不光是redis

高效能kv儲存RedisRedis ClusterPika:如何應對4000億的日訪問量?

一、背景介紹 隨著360公司業務發展,業務使用kv儲存的需求越來越大。為了應對kv儲存需求爆發式的增長和多使用場景的需求,360web平臺部致力於打造一個全方位,適用於多場景需求的kv解決方案。目前,我們線上大規模使用的kv儲存有Redis,Redis cluster以及Pika。 為什麼說是爆發式

高併發神器 非關係型資料庫NoSqlRedis介紹以及Linux環境下的安裝

關係型資料庫支援原子性、一致性、隔離性、永續性四大特性,非關係資料庫不支援這四大特性。 非關係資料庫相對於關係型資料庫的優勢: 關係型資料庫為了降低資料冗餘,保證資料約束性,在資料查詢時不得不使用多個數據表之間的連線操作,但是這極大的降低了查詢效率,不能滿足當下網路應用的

12python全棧路-並發編程多進程

arc 數據傳遞 狀態 for 是否 直接 沒有 交女朋友 pan 十二、並發編程之多進程 http://www.cnblogs.com/linhaifeng/articles/6817679.html 理論:http://www.cnblogs.com/linhaifen

12ABPZero系列教程拼多多賣家工具 拼團提醒功能登錄拼多多實現

template trigge cancel except 系列教程 open() toa eat button   上篇文章已經完成了整個拼多多拼團提醒功能,本篇繼續完成拼多多帳號登錄,拼多多帳號登錄的目的是為了獲取拼團商品的SKU和訂單號,便於商家備貨。 以下是拼多多

JavaWeb項目架構Redis分布式日誌隊列

fig 雙端隊列 可靠 https end 可靠性 中間件 關系 -- 架構、分布式、日誌隊列,標題自己都看著唬人,其實就是一個日誌收集的功能,只不過中間加了一個Redis做消息隊列罷了。 前言 為什麽需要消息隊列? 當系統中出現“生產“和“消費“的速度或穩定性等因素不一

12CentOS7 安裝Docker擴充套件(Docker tag)

Docker tag   上一篇文章中你通過docker commit儲存了容器的狀態,並且得到一個隨機的映象ID。記住和管理巨大數量的映象ID非常困難。使用Docker的tag功能可以給映象設定一個可讀的名稱,提醒你映象建立的目的是什麼。掌握這個技術使你對映象的用途一目

淺談web架構演化過程

前言 最近在開發過程中,遇到很多緩解配置的問題,工程很難啟動,也不知道為什麼環境需要這麼多配置的意義。就在這個時候,一本好書《大型網站技術:核心原理與案例分析》給我帶來全新視角,必須強勢安利一把。連結地址 本文先淺談書中所提到的web架構演化過程。如果經歷的專案足夠多

淺談web架構架構設計(總結)

架構模式 先來說說模式: 每一個模式描述了一個在我們周圍不斷重複發生的問題及該問題解決方案的核心。這樣,你就能一次又一次地用該方案而不必做重複工作 。 先來說說常見的網站架構模式。這裡沒有涉及具體實現過程,只是簡單介紹其思想和原理,方便日後有用到再深入瞭解。 分層 分層是企業應用系統中最常見的一種

Web架構Nginx基礎配置

[TOC] # 1、Nginx 虛擬主機 所謂的虛擬主機,在Web服務裡就是一個獨立的網站站點,這個站點對應獨立的域名(也可能是IP或埠),具有獨立的程式及資源目錄,可以獨立地對外提供服務供使用者訪問。 在Nginx中則使用一個server{} 標籤來標識一個虛擬主機,一個Web服務裡可以有多個虛擬主機標

Redis介紹安裝

消息 字符串 源碼 通過 進行 sta 設置 mys bar 一、redis介紹 redis是一個key-value存儲系統。和Memcached類似,它支持存儲的values類型相對更多,包括字符串、列表、哈希散列表、集合,有序集合。 這些數據類型都支持push/pop