日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

redis-day1

發布時間:2023/12/18 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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

總結

以上是生活随笔為你收集整理的redis-day1的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。