Redis 學習之簡介及安裝

来源:http://www.cnblogs.com/jalja/archive/2017/02/17/6409680.html
-Advertisement-
Play Games

1、處理超大量數據能力強 2、可以運行在便宜的PC伺服器集群上 4、對數據的高併發讀寫能力強(mysql在上萬數據的寫入對磁碟IO消耗很大) 5、對海量數據的高效存儲和訪問。 6、對數據的高可靠擴展性和高可用性 ...


該文使用centos6.5 64位 redis-3.2.8

NSQL:Not Only SQL 以key-value 形式存儲和傳統的關係型資料庫不一樣,不一定遵循傳統資料庫的一些基本要求,比如說遵循SQL標準、ACID屬性、表結構等,這類資料庫主要具有以下特點:非關係型的、分散式的、開源的、水平可擴展的。

名稱解釋:

1、key-value :js中的對象,json數據格式、java中的map,java中的javabean

2、SQL標準:insert、delete、update、select 等標準的SQL語句

3、ACID屬性:事務 ,redis中也存在事務,但很簡單。

4、表結構:通過已經建立的表向表中添加數據,redis可以在表不存在的情況下直接添加數據

NSQL 特點:

1、處理超大量數據能力強

2、可以運行在便宜的PC伺服器集群上

4、對數據的高併發讀寫能力強(mysql在上萬數據的寫入對磁碟IO消耗很大)

5、對海量數據的高效存儲和訪問。

6、對數據的高可靠擴展性和高可用性

一、redis簡介

Redis是一個開源的,先進的key-value存儲。它通常被稱為數據結構伺服器,因為鍵可以包含字元串、哈希、鏈表、集合和有序集合。

支持的數據類型:string(字元串)、list(集合)、set(集合)、zset(有序集合)。

支持的操作:這些數據類型支持push/pop、add/remove 等豐富的數據操作。支持不同方式的排序。

緩存:redis為了保證效率數據都是緩存在記憶體中的,為了防止系統突然崩潰從而導致記憶體中的數據丟失,它也可以周期性的把更新的數據寫入磁碟或者把修改操作寫入追加的記錄文件。

redis用戶:新浪微博是redis最大的用戶,200多台物理機。

redis在新浪微博中的使用場景:

1、應用程式直接訪問redis資料庫

  該方式與傳統應用程式訪問mysql類似,但該方式不安全。

2、應用程式直接訪問Redis,只有當Redis訪問失敗後才訪問Mysql

a、應用程式先訪問redis server,redis與mysql集群進行數據同步

b、如果redis集群宕機後應用程式直接訪問mysql集群

3、redis使用場景:

a、區最新N個數據的操作

b、排行榜應用、取TOP N操作

c、需要精確設定過期時間的應用

d、計數器應用

e、uniq操作、獲取某段時間所有數據排重值

f、實時系統、反垃圾系統

g、Pub/Sub構建實時消息系統

h、構建隊列系統

i、redis緩存

三、redis的安裝

1、下載 https://redis.io/download  穩定版(stable)

a、解壓:[root@localhost tools]# tar  -zxvf redis-3.2.8.tar.gz 

b、編譯:[root@localhost redis-3.2.8]# make

如果出現錯誤 gcc:命令未找到   則安裝gcc   yum install -y gcc g++ gcc-c++ make

如果出現 tcl 問題 則安裝tcl  yum install tcl 

c、安裝 [root@localhost src]# make install

在src下將出現redis的相關命令

-rwxr-xr-x. 1 root root 5707211 2月 17 22:33 redis-cli    進入redis客戶端命令

-rwxr-xr-x. 1 root root 7827978 2月  17 22:33 redis-server 啟動redis服務命令

2、配置redis

(1)[root@localhost src]# mkdir -p /usr/local/redis/bin   創建文件夾用戶存儲redis命令
(2)[root@localhost src]# mkdir -p /usr/local/redis/etc   創建文件夾用戶存儲redis配置文件

(3)將/tools/redis-3.2.8下的  redis.conf移動到/usr/local/redis/etc下 

    [root@localhost redis-3.2.8]# mv ./redis.conf /usr/local/redis/etc

(4)將/tools/redis-3.2.8/src下的  mkreleasehdr.sh、redis-benchmark、redis-check-aof、redis-check-rdb、redis-cli、redis-server移動到/usr/local/redis/bin下 

(5)啟動redis服務:進入redis   bin目錄下  /usr/local/redis/bin

   [root@localhost bin]# ./redis-server

   如果出現   -bash: ./redis-server: 許可權不夠

      查看許可權:[root@localhost bin]# ls -l | grep -i redis-server   

   賦予xr許可權 [root@localhost bin]# chmod 755 redis-server

[root@localhost bin]# ls -l | grep -i redis-server
-rw-rw-r--. 1 root root 7827978 2月  17 22:52 redis-server
[root@localhost bin]# chmod 755 redis-server
[root@localhost bin]# ls -l | grep -i redis-server
-rwxr-xr-x. 1 root root 7827978 2月  17 22:52 redis-server

 

 提示信息

[root@localhost bin]# ./redis-server
5322:C 17 Feb 23:18:39.086 # Warning: no config file specified, using the default config. In order to specify a config file use ./redis-server /path/to/redis.conf
5322:M 17 Feb 23:18:39.087 * Increased maximum number of open files to 10032 (it was originally set to 1024).
                _._                                                  
           _.-``__ ''-._                                             
      _.-``    `.  `_.  ''-._           Redis 3.2.8 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._                                   
 (    '      ,       .-`  | `,    )     Running in standalone mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
 |    `-._   `._    /     _.-'    |     PID: 5322
  `-._    `-._  `-./  _.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |           http://redis.io        
  `-._    `-._`-.__.-'_.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |                                  
  `-._    `-._`-.__.-'_.-'    _.-'                                   
      `-._    `-.__.-'    _.-'                                       
          `-._        _.-'                                           
              `-.__.-'                                               

5322:M 17 Feb 23:18:39.113 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
5322:M 17 Feb 23:18:39.113 # Server started, Redis version 3.2.8
5322:M 17 Feb 23:18:39.114 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
5322:M 17 Feb 23:18:39.114 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.
5322:M 17 Feb 23:18:39.114 * The server is now ready to accept connections on port 6379

安裝成功埠 6379 

使用指定的配置文件啟動redis伺服器

[root@localhost bin]# ./redis-server /usr/local/redis/etc/redis.conf

四、redis後臺運行

################################# GENERAL #####################################

# By default Redis does not run as a daemon. Use 'yes' if you need it.
# Note that Redis will write a pid file in /var/run/redis.pid when daemonized.
daemonize no 

daemonize no:預設啟動方式該方式占用一個視窗,一旦ctrl+c redis伺服器就關閉

daemonize yes:將redis的啟動方式改為後臺運行

進入:redis 客戶端 

[root@localhost bin]# pwd
/usr/local/redis/bin
[root@localhost bin]# ./redis-cli
127.0.0.1:6379>

關閉redis伺服器:

[root@localhost bin]# pkill redis-serve (通過進程的方式)

[root@localhost bin]# ./redis-cli shutdown(通過redis命令)

 


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

-Advertisement-
Play Games
更多相關文章
  • iOS OpenGL ES CAEAGLLayer 創建Framebuffer和Renderbuffer ...
  • 這段時間項目要求做一個類似的鬧鐘提醒功能,對通知不太熟悉的我,決定先用到xcode自帶的本地通知試試,最終成功的實現了功能,特整理分享下。 它的表現特點: app關閉的時候也能接收和顯示通知。 app處於後臺的時候能接收通知也能顯示。 app處於前臺的時候能接收,但不能顯示,但是會走應用程式dele ...
  • 今天剛從GitHub上找了一個不錯的項目,想要把它導入自己的項目中,過程中也遇到了一些小問題,總結一下,以便複習回顧!!!! 1.首先將從GitHub上下載的壓縮包進行解壓,找到其中的項目文件,直接複製粘貼在自己要導入的項目的文件夾中!!!然後Build>Rebuild Project,重新構建項目 ...
  • 經過一番思想掙扎和鬥爭之後,最終還是選擇採用Xamarin來開發跨平臺移動應用,好處和優點大家可以搜索其它博文,因為家裡面窮加上談了戀愛,就不買蘋果了,開發階段在Windows上面直接搞定哈,時候不早了,廢話不多說,咱們擼起袖子開搞吧。 安裝前的準備工具 1、蘋果鏡像文件:http://pan.ba ...
  • 在開發的時候經常需要訪問網路,比如Android就有好多這方面的框架:Volley、OkHttp、Retrofit等,當你看這些框架源碼時,可能會很好奇關於http的部分,它的首部欄位是什麼意思,http是如何工作的??等等,希望這篇文章會為你解惑。 一、概念 協議是指電腦通信網路中兩台電腦之間 ...
  • 最近有一點個人的時間,嘗試一下自己翻譯一下英文的 Optimizing graphics rendering in Unity Games, 這兒附上英文鏈接: 個人英文水平有限,unity圖像學知識也是入門,希望通過這次翻譯能增進自己的圖形學知識,若有錯誤,歡迎各位大神指點,讓我也學習進步,謝謝。 ...
  • 由OpenDigg 出品的安卓開源項目周報第八期來啦。我們的安卓開源周報集合了OpenDigg一周來新收錄的優質的安卓開源項目,方便安卓開發人員便捷的找到自己需要的項目工具。chuck 攔截並維持所有HTTP請求和響應 Just-Another-Android-App 在安卓中實現的很酷的效果 Ba ...
  • 1、查詢指定時間區間的工作日 這個主要難點是法定節假日,國家的法定節假日每年都不一樣,還涉及到調休,所以我們設計一個假日表。主要欄位有年份,類型(是否調休),假期日期。如下: 添加好當年的假期和調休日期 寫個方法計算出除開法定假日的工作日 執行這個表值函數後加上調休日和減去法定假日就是工作日了,大家 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...