redis-day1

1 Redis 概述

  REmote DIctionary Server(Redis)是一個基于key-value鍵值對的持久化數據庫存儲系統。redis和大名鼎鼎的Memcached緩存服務軟件很像,但是Redis支持的數據存儲類型比Memcached更豐富,包括strings(字符串)、lists(列表)、sets(集合)和sorted sets(有序集合)等

  這些數據類型支持push/pop、add/remove及取交集、并集和差集及更豐富的操作,而且這些操作都是原子性的。在此基礎上,redis支持各種不同方式的排序。與memcached緩存服務一樣,為了保證效率,數據都是緩存在內存中提供服務。和memcached不同的是,redis持久化緩存服務還會周期性的把更新的數據寫入到磁盤以及把修改的操作記錄追加到文件里記錄下來,比Memcached更有優勢的是,redis還支持master-slave(主從)同步,這點很類似關系型數據庫MySQL主從復制功能

  Redis是一個開源的使用C語言編寫、支持網絡、可基于內存亦可持久化的日志型、key-value數據庫,并提供多種語言的API。從2010年3月15日起,Redis的開發工作由VMware主持

  Redis軟件的出現,在一定程度上彌補了memcached這類key-value內存緩存服務的不足,在部分場合可以對關系數據庫起到很好的補充作用。redis提供了Python,Ruby,Erlang,PHP客戶端,使用起來很方便。Redis官方文檔如下:

  https://redis.io/documentation

  http://redis.cn/

  1.1 Redis優點

  • 與memcached不同,Redis可以持久化存儲數據
  • 性能很高:Redis能支持超過10W美妙的讀寫頻率
  • 豐富的數據類型:Redis支持二進制的Strings,Lists,Hashes,Sets及sorted Sets等數據類型
  • 原子:Redis的所有操作都是原子性,同時Redis還支持對幾個操作全并后的原子性執行
  • 豐富的特性:Redis還支持publish/subscribe(發布/訂閱),通知,key過期等等特性
  • Redis支持異機主從復制

  1.2 缺點

  • 系統運行有毛刺
  • 不同命令延遲差別極大
  • 內存管理開銷大
  • buffer io造成OOM

  1.3 Redis的數據類型

  • String 字符串
  • List 列表
  • Set 集合
  • Sorted set 有序集合

?

2 Redis的安裝及使用

  Redis的生產經驗教訓

  • 要進行Master-slave主從同步配置,在出現服務故障時可以切換
  • 在master禁用數據持久化,只需在slave上配置數據持久化
  • 物理內存+虛擬內存不足,這個時候dump一直死這,時間久了機器掛掉。這個情況就是災難!64-128G內存,SSD硬盤
  • 當Redis物理內存使用超過內存總容量的3/時就會開始比較危險了,就開始做SWAP,內存碎片打!
  • 當達到最大內存時,會清空帶有過期時間的key,及時key未到過期時間
  • redis與DB同步寫的問題,先寫DB,厚些redis,因為寫內存基本上沒有問題

  2.1 redis環境部署

Master:10.0.0.1 Centos6.5 Redis-Master

  2.2 安裝

#Master
[root@Redis-Master downloads]# wget http://download.redis.io/releases/redis-3.2.4.tar.gz
[root@Redis-Master downloads]# tar zxf redis-3.2.4.tar.gz 
[root@Redis-Master downloads]# cd redis-3.2.4
[root@Redis-Master redis-3.2.4]# make PREFIX=/usr/local/redis install
#查看目錄
[root@Redis-Master redis-3.2.4]# ls /usr/local/redis/bin/
redis-benchmark  redis-check-aof  redis-check-rdb  redis-cli  redis-sentinel  redis-server
#只有這一個bin目錄
#redis-server:Redis服務器的daemon啟動程序
redis-cli:Redis命令行操作工具。當然,你也可以用telnet根據其純文本協議來操作
redis-benckmark:Redis性能測試工具,測試Redis在你的系統及你的配置下的讀寫性能
redis-check-aof:對更新日志appendonly.aof檢查,是否可用,類似檢查mysql binlog的工具
redis-check-dump:用于本地數據庫rdb文件的檢查

  2.3 配置并啟動redis服務

1、配置環境變量
[root@Redis-Master /]# echo 'PATH=/usr/local/redis/bin/:$PATH' >>/etc/profile
[root@Redis-Master /]# source /etc/profile
2、拷貝配置文件
[root@Redis-Master /]# cd /tmp/downloads/redis-3.2.4
[root@Redis-Master redis-3.2.4]# mkdir /usr/local/redis/conf
[root@Redis-Master redis-3.2.4]# cp redis.conf /usr/local/redis/conf/
3、啟動
[root@Redis-Master /]# echo "vm.overcommit_memory = 1" >>/etc/sysctl.conf 
[root@Redis-Master /]# sysctl -p #以防后臺保存失敗
[root@Redis-Master /]# redis-server /usr/local/redis/conf/redis.conf &
#vm.overcommit_memory該參數有三個值,分別是:
0:當用戶空間請求更多的內存時,內核嘗試估算出剩余可用的內存
1:當設這個參數值為1時,內核允許超量使用內存知道用完為止,主要用于科學計算
2:當設這個參數值為2時,內核會使用一個絕不過量使用內存的算法,即系統整個內存地址空間不能超過swap+50%的RAM值,50%參數的設定是在overcommit_ratio中設定
4、關閉
[root@Redis-Master /]# redis-cli shutdown save

  2.4 通過客戶端來操作redis數據庫

1、存值
[root@Redis-Master /]# redis-cli 
127.0.0.1:6379> set id 001
OK
2、取值
127.0.0.1:6379> get id #可以get ket,無法get value
"001"
3、刪除
127.0.0.1:6379> del id #刪除key
(integer) 1
4、查看是否存在
127.0.0.1:6379> EXISTS id
(integer) 0 #0為不存在
5、取所有
127.0.0.1:6379> keys *#redis默認有16個庫,0為開頭#遠程連接
[root@Redis-Master /]# redis-cli -h 10.0.0.1 -p 6379 #可以設置密碼,跟mysql很像
10.0.0.1:6379>#telnet和nc都可以操作

  2.5 redis的安全賬戶密碼及授權權限

[root@Redis-Master /]# cat /usr/local/redis/conf/redis.conf |grep requirepass
# If the master is password protected (using the "requirepass" configuration
# requirepass foobared
requirepass 123.com
格式:[ requirepass ] [ password ]
#123.com就是密碼
#重啟redis#測試
127.0.0.1:6379> set 1 daniel
(error) NOAUTH Authentication required.
#提示沒認證
127.0.0.1:6379> auth 123.com
OK
#登錄
127.0.0.1:6379> set 1 daniel
OK
#再次測試,成功#或者
[root@Redis-Master /]# redis-cli -a 123.com
127.0.0.1:6379>
#可以直接輸入密碼后進入#命令重命名
[root@Redis-Master /]# grep rename-command /usr/local/redis/conf/redis.conf 
# security of read only slaves using 'rename-command' to shadow all the
# rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52
# rename-command CONFIG ""
rename-command set "se"
#格式 [ rename-command ] [ CONFIG ] [ "" ]
#測試
[root@Redis-Master /]# redis-cli -a 123.com
127.0.0.1:6379> set 2 cat
(error) ERR unknown command 'set'
127.0.0.1:6379> se 2 cat
OK
#set無法使用,se可以

  2.7 在php環境中安裝redis的客戶端擴展

[root@RS02 downloads]# wget https://codeload.github.com/phpredis/phpredis/zip/develop
[root@RS02 downloads]# unzip develop 
[root@RS02 downloads]# cd phpredis-develop/
[root@RS02 phpredis-develop]# /usr/local/php5.6.33/bin/phpize
[root@RS02 phpredis-develop]# ./configure --with-php-config=/usr/local/php5.6.33/bin/php-config
[root@RS02 phpredis-develop]# make && make install#修改php.ini,重啟php
[root@RS02 php5.6.33]# sed -i 's#; extension_dir = "./"#extension_dir = "/usr/local/php5.6.33/lib/php/extensions/no-debug-non-zts-20131226/"#g' /usr/local/php5.6.33/lib/php.ini 
[root@RS02 php5.6.33]# echo "extension = redis.so" >>/usr/local/php5.6.33/lib/php.ini
[root@RS02 php5.6.33]# /usr/local/php5.6.33/sbin/php-fpm

#出現這個信息就算正確

  2.8 開發php程序實戰redis服務

#開啟redis的遠程連接
[root@Redis-Master /]# sed -i 's/bind 127.0.0.1/#bind 127.0.0.1/g' /usr/local/redis/conf/redis.conf
#重啟
[root@RS02 php5.6.33]# cat /usr/local/nginx/html/index.php 
<?php$redis = new Redis();$redis->connect('10.0.0.1',6379) or die ("heh");$redis->auth('123.com');$redis->set('100','DANIEL');$var = $redis->get('100');echo "$var\n";
?>
[root@Redis-Master /]# curl 10.0.0.81
DANIEL
成功

  2.9 開發python程序實戰操作redis服務

?

轉載于:https://www.cnblogs.com/wazy/p/8545438.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/453299.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/453299.shtml
英文地址,請注明出處:http://en.pswp.cn/news/453299.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C語言數碼管是共陰共陽程序,C語言實現共陰極數碼管操作

共陰極或者共陽極數碼管&#xff0c;因為其需要電流大&#xff0c;而一般51輸出電流低&#xff0c;需要鎖存器。買的開發板使用的共陰極數碼管。至于其構造&#xff0c;找個相關方面的書看看&#xff0c;這里主要是對做好的電路板進行編程。剛開始的時候&#xff0c;感覺在數碼…

數據庫主要特點

(1)實現數據共享。數據共享包含所有用戶可同時存取數據庫中的數據&#xff0c;也包括用戶可以用各種方式通過接口使用數據庫&#xff0c;并提供數據共享。 (2)減少數據的冗余度。同文件系統相比&#xff0c;由于數據庫實現了數據共享&#xff0c;從而避免了用戶各自建立應用文…

百度與華為全面戰略合作 人工智能手機真的要來了

視頻加載中...12月21日百度和華為在北京宣布達成全面戰略合作。這次合作內容主要包括三點&#xff0c;首先是在語音、語義、視覺和VR上的自然交互&#xff0c;這是百度為華為手機AI賦能的基礎層。第二是基于華為HiAI平臺和百度PaddlePaddle深度學習框架&#xff0c;共建人工智能…

JavaScript數據類型

一、JavaScript數據類型主要分為原始類型和引用數據類型。 原始類型包括(不可拆分的東西)&#xff1a;Number、String、Boolean、Null、Undefined。引用數據類型包括&#xff1a;Object&#xff08;Array&#xff0c;Date&#xff0c;RegExp&#xff0c;Function&#xff09;ty…

funcode拼圖游戲c語言程序,同求funcode平臺下拼圖游戲的C語言代碼

做了好幾天&#xff0c;寫了好多回就是不對&#xff0c;徹底崩潰。。#include "CommonAPI.h"//#include "LessonX.h"#include#define BLOCK_COUNT 4int g_iGameState;intg_iBlockState[BLOCK_COUNT][BLOCK_COUNT];charg_szBlockName[BLOCK_COUNT*BLOCK_COU…

什么是透明傳輸

透明傳輸是指不管所傳數據是什么樣的比特組合&#xff0c;都應當能夠在鏈路上傳送。當所傳數據中的比特組合恰巧與某一個控制信息完全一樣時&#xff0c;就必須采取適當的措施&#xff0c;使收方不會將這樣的數據誤認為是某種控制信息。這樣才能保證數據鏈路層的傳輸是透明的。…

Android 秒級編譯FreeLine

項目地址&#xff1a;FreeLine FreeLine官網: FreeLine 1. 安裝FreeLine插件 File->Settings->Plugins, 搜索輸入FreeLine Plugin, 查找到后進行安裝并重啟Android Studio。 圖1.png安裝好之后&#xff0c;在工具欄就會出一個圖標 圖2.png2. 配置gradle 根目錄build.gr…

JS實現大整數乘法(性能優化、正負整數)

本方法的思路為&#xff1a; 一&#xff1a;檢查了輸入的合法性&#xff08;非空&#xff0c;無非法字符&#xff09; 二&#xff1a;檢查輸入是否可以進行簡單計算&#xff08;一個數為 0&#xff0c;1&#xff0c;1&#xff0c;-1&#xff09; 三&#xff1a;去掉輸入最前面可…

c語言中- gt he,C語言中deta,fabs,lt;stdlib.hgt;,lt;stdio.hgt;分別是什么意思

fabs 編輯本段C語言數學函數:fabs 函數簡介  原型&#xff1a;在TC中原型是extern float fabs(float x);&#xff0c;在VC6.0中原型是double fabs( double x );。   用法&#xff1a;#include   功能&#xff1a;求浮點數x的絕對值   說明&#xff1a;計算|x|, 當x不為…

物理層

目的&#xff1a; 物理層要盡可能地屏蔽掉物理設備和傳輸媒體&#xff0c;通信手段的不同&#xff0c;使數據鏈路層感覺不到這些差異&#xff0c;只考慮完成本層的協議和服務。 給其服務用戶&#xff08;數據鏈路層&#xff09;在一條物理的傳輸媒體上傳送和接收比特流…

C語言中的二級指針(雙指針)

二級指針又叫雙指針。C語言中不存在引用&#xff0c;所以當你試圖改變一個指針的值的時候必須使用二級指針。C中可以使用引用類型來實現。 下面講解C中的二級指針的使用方法。 例如我們使用指針來交換兩個整型變量的值。 錯誤代碼如下&#xff1a; 一級指針 [cpp] view pla…

測試環境服務器硬盤塞滿問題排查

項目中出現的問題 某天下午測試環境服務器出現tab無法補全命令&#xff0c;給出的提示大概意思就是說,無可用空間無法創建臨時文件&#xff0c;不過這次跟上次出現的問題比較像&#xff0c;上次服務器出現的問題&#xff0c;因此樓主判斷可能是服務器數據盤被占滿&#xff0c;果…

alpine_glibc 構建sun jdk 8的docker鏡像

2019獨角獸企業重金招聘Python工程師標準>>> 構建系統基礎鏡像 alpine glibc 的Dockerfile內容如下&#xff1a; alpine:3.6 MAINTAINER tongqiang<tongqiangyingmail.com># Here we install GNU libc (aka glibc) and set C.UTF-8 locale as default.ENV ALP…

單工 半雙工 全雙工

1 單工 單工就是指A只能發信號&#xff0c;而B只能接收信號&#xff0c;通信是單向的&#xff0c;就象燈塔之于航船——燈塔發出光信號而航船只能接收信號以確保自己行駛在正確的航線上。 2 半雙工 半雙工就是指A能發信號給B&#xff0c;B也能發信號給A&#xff0c;但這兩…

c語言兩個循環的ys,c語言編程:從鍵盤輸入兩個數,求它們的最小公倍數

滿意答案flywisdom2019.06.20采納率&#xff1a;44% 等級&#xff1a;9已幫助&#xff1a;1064人main(){int p,r,n,m,temp;printf("Please enter 2 numbers n,m:");scanf("%d,%d",&n,&m);//輸入兩個正整數.if(n{tempn;nm;mtemp;}pn*m;//P是原來…

每日微軟面試題

每日微軟面試題——day 1 <以下微軟面試題全來自網絡> <以下答案與分析純屬個人觀點&#xff0c;不足之處&#xff0c;還望不吝指出^_^> 題&#xff1a;.編寫反轉字符串的程序&#xff0c;要求優化速度、優化空間。 分析&#xff1a;構建兩個迭代器p 和 q &…

第八章 多態

第八章 多態1. 重寫一個類通過繼承來產生一個新類&#xff0c;繼承了父類的所有變量和方法&#xff0c;在繼承這些變量和方法的時候&#xff0c;子類也可以具有自己獨特的特征和行為。Public class fruit{Public void print(){System.out.println(“這是超類的方法”);}}Clas…

Ionic Angular自動捕獲錯誤 配置Angular2.x +

配置app.module.ts import { Pro } from ionic/pro;// These are the imports required for the code below, // feel free to merge into existing imports. import { Injectable, Injector } from angular/core; import { IonicErrorHandler } from ionic-angular;const Ioni…

信道和物理媒體的區別

一個信道可以包含很多的物理媒體嗎&#xff0c;同時一個物理媒體也可以包含很多的信道。 信道借助于物理媒體實現數據傳輸&#xff0c;在比較遠的數據傳輸過程中可能會使用多個不同的物理媒體實現數據的傳輸。 而一個物理媒體也可以借助于多路復用技術實現多條信道

c語言刪除尾部空格函數,新人提問:如何將輸出時每行最后一個空格刪除

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓如何將每行最后一個空格刪除&#xff0c;使矩陣只有數字間有空格&#xff0c;沒有多余空格&#xff1f;#include#includeint main(){int i,j,k,m,n,x,h,y;int a[15][15]{0};while(scanf("%d",&i)){k1;for(n1;n<i;…