redis 概述及部署 安装php和python客户端

时间:2022-12-10 19:33:21

概述

Redis是一个基于key-value键值对的持久化数据库存储系统。redis支持的数据存储类型比memcached更丰富,包括strings(字符串),lists(列表),sets(集合)和sorted sets(有序集合)等。

这些数据类型支持push/pop,add/remove及取交集,并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached缓存服务一样,为了保证效率,数据都是缓存在内存中提供服务。和memcached不同的是,redis持久化缓存服务还会周期性的把更新的数据写入到磁盘以及把修改的操作记录追加到文件里记录下来,比memcached更有优势的是,redis还支持master-slave(主从)同步,这点很类似关系型数据库MySQL主从复制功能

Redis是一个开源的使用C语言编写(3万多行代码),支持网络,可基于内存亦可持久化的日志型,Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。

Redis软件的出现,再一定程度上弥补了memcached这类key-value内存缓存服务的不足,在部分场合可以对关系数据库起到很好的补充作用。redis提供了Python,Ruby,Erlang,PHP客户端,使用起来很方便.

redis特点

1.key-value键值类型存储

2.支持数据可靠存储及落地

3.单进程单线程高性能服务器

4.crash safe & recovery slow

5.单机qps可以达到10W

6.适合小数据量高速读写访问

Redis优点

1.与memcached不同,Redis可以持久化存储数据

2.性能很高:Redis能支持超过10W每秒的读写频率。

3.丰富的数据类型:Redis支持二进制的Strings,Lists,Hashes,Sets及sorted Sets等数据类型操作

4.原子:Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行

5.丰富的特性:Redis还支持publish/subscribe(发布/订阅),通知,key过期等等特性。

6.redis支持异机主从复制。

redis缺陷与陷阱

1.系统运行有毛刺

2.不同命令延迟差别极大

3.内存管理开销大(设置低于物理内存3/5)

4.buffer io造成系统OOM(内存溢出)

redis的数据类型

作为Key-value型存储系统数据库,Redis提供了键(Key)和值(value)映射关系。但是,除了常规的数值或字符串,Redis的键值还可以是以下形式之一,下面为最为常用的数据类型:

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

redis 概述及部署 安装php和python客户端

redis 持久化

通常,Redis将数据存储于内存中,或被配置为使用虚拟内存。通过两种方式可以实现数据持久化:

使用快照(snapshot)的方式,将内存中的数据不断写入磁盘,或使用类似MySQL的binlog日志

aof (但并不用于主从同步)方式,记录每次更新的日志。前者性能较高,但是可能会引起一定程度的数据丢失;后者相反。

#Snapshot(快照)
save #900秒有1key容量被更新,则触发快照写入磁盘
save
save

#AOF(更新日志)
appendfsync always #总是记录更新内容
appendfsync everysec #每秒记录更新内容
appendfsync no #不记录更新内容

特别提示:

如果选择了快照的策略,那么快照在每次进行保存的时候,都会阻碍执行前端的客户端请求。 快照会一次性将内存里的数据全都写进磁盘。

Redis的生产经验教训

1.一定要进行Master-slave主从同步配置,在出现服务故障时可以切换

2.在master禁用数据持久化,只需要在slave上配置数据持久化

3.物理内存+虚拟内存不足,这个时候dump一直死着,时间久了机器挂掉。这个情况就是灾难!

4.当Redis物理内存使用超过内存总容量的3/5时就会开始比较危险了,就开始做swap,内存碎片大!

5.当达到最大内存时,会清空带有过期时间的key,即使key未到过期时间。

6.redis与DB同步写的问题,先写DB,后写redis,因为写内存基本上没有问题。

Redis的服务器4.0版本源码编译安装

系统:Centos7

版本:redis4.0

redis下载地址:https://redis.io/download

redis源码编译

yum -y install wget gcc gcc-c++ make tar openssl-devel cmake
tar xf redis-4.0.10.tar.gz -C /usr/src/
cd /usr/src/redis-4.0.10/
make;make MALLOC=jemalloc;make PREFIX=/usr/local/redis install
mkdir -p /usr/local/redis/conf
cp /usr/src/redis-4.0.10/redis.conf /usr/local/redis/conf/
cp /usr/src/redis-4.0.10/sentinel.conf /usr/local/redis/conf/
ln -s /usr/local/redis/bin/* /usr/local/bin/

redis-server --version     #服务端连接命令
Redis server v=4.0.10 sha=00000000:0 malloc=jemalloc-4.0.3 bits=64 build=d2228e273f4aff2f

redis-cli --version     #客户端连接命令
redis-cli 4.0.10    

编译安装命令执行完成之后,会在/usr/local/redis/bin/目录下生成5个可执行文件,分别是:

redis-server      #Redis服务器的daemon启动程序
redis-cli   #Redis命令操作工具。当然,你也可以用telnet根据其纯文本协议来操作
redis-benchmark   #Redis性能测试工具,测试Redis在你的系统及你的配置下的读写性能。
redis-check-aof   #对更新日志appendonly.aof检查,是否可用,类似检查mysql binlog的工具
redis-check-dump #用于本地数据库rdb文件的检查

Redis的服务器启动和系统参数调整

简化redis配置文件

cp /usr/local/redis/conf/redis.conf{,.bak}               #备份配租文件
egrep -v "^$|^#" /usr/local/redis/conf/redis.conf.bak > /usr/local/redis/conf/redis.conf #简化配置文件
mkdir -p /data/redis/ #创建redis数据目录

更改redis配置文件/usr/local/redis/conf/redis.conf

#修改redis配置文件以下参数
cat -n conf/redis.conf | sed -n '1p;3p;4p;7p;9p;11p;21p'
bind 127.0.0.1
port
tcp-backlog
daemonize no
pidfile /var/run/redis_6379.pid
logfile ""
dir ./
#修改成以下设置
cat -n conf/redis.conf | sed -n '1p;3p;4p;7p;9p;11p'
bind 0.0.0.0 #监听地址
port #监听端口
tcp-backlog #tcp连接数
daemonize yes #是否后台启动
pidfile /data/redis/redis.pid #pid存放目录
logfile "/data/redis/redis.log" #日志存放目录
dir /data/redis/ #工作目录

redis服务器启动和关闭

#启动redis服务器
redis-server /usr/local/redis/conf/redis.conf
netstat -antup | grep redis
#关闭redis服务器
redis-cli shutdown
netstat -antup | grep redis
#连接redis服务器
redis-server /usr/local/redis/conf/redis.conf
redis-cli -h 127.0.0.1

系统参数优化调整

#启动redis以后,我们查看系统日志
cat /data/redis/redis.log
cat /data/redis/redis.log
:C Aug ::02.029 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
:C Aug ::02.029 # Redis version=4.0., bits=, commit=, modified=, pid=, just started
:C Aug ::02.029 # Configuration loaded
:M Aug ::02.033 * Increased maximum number of open files to (it was originally set to ).
                 #警告提示1:系统文件描述符设置的太小了,才1024,我们最好设置到10032
_._
_.-``__ ''-._
_.-`` `. `_. ''-._ Redis 4.0. (/) bit
.-`` .-```. ```\/ _.,_ ''-._
( ' , .-` | `, ) Running in standalone mode
|`-._`-...-` __...-.``-._|'` _.-'| Port:
| `-._ `._ / _.-' | PID: 7703
`-._ `-._ `-./ _.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' | http://redis.io
`-._ `-._`-.__.-'_.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' |
`-._ `-._`-.__.-'_.-' _.-'
`-._ `-.__.-' _.-'
`-._ _.-'
`-.__.-' :M Aug ::02.035 # WARNING: The TCP backlog setting of cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of .
                #由于/proc/sys/net/core/somaxconn设置为较低的128,因此无法强制设置1024的TCP backlog。
:M Aug ::02.035 # Server initialized
:M Aug ::02.035 # WARNING overcommit_memory is set to ! 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.
                #警告提示3:overcommit_memory=0为不允许超额抢占内存,但是,rdb保存可能会失败。建议将vm.overcommit_memory = 1进行修改
:M Aug ::02.035 # 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.
                #警告提示4:你的内核中启用了巨大内存页的支持,这将与redis的延迟内存使用冲突。
:M Aug ::02.035 * Ready to accept connections

(1)调整系统文件描述符

echo "* - nofile 10240" >> /etc/security/limits.conf
bash        #刷新下即生效
ulimit -n

(2)调整系统的TCP连接数

 sysctl -a | grep soma
sysctl: reading key "net.ipv6.conf.all.stable_secret"
sysctl: reading key "net.ipv6.conf.default.stable_secret"
sysctl: reading key "net.ipv6.conf.eth0.stable_secret"
sysctl: reading key "net.ipv6.conf.lo.stable_secret"
net.core.somaxconn = echo "net.core.somaxconn = 10240" >> /etc/sysctl.conf sysctl -p
net.core.somaxconn =

(3)调整系统内存分配策略

echo "vm.overcommit_memory = 1" >> /etc/sysctl.conf
sysctl -p
net.core.somaxconn =
vm.overcommit_memory =

vm.overcommit_memory参数说明: 
根据内核文档,该参数有三个值,分别是: 
0:当用户空间请求更多的内存时,内核尝试估算出剩余可用的内存。 
1:当设这个参数值为1时,内核允许超量使用内存直到用完为止,主要用于科学计算 
2:当设这个参数值为2时,内核会使用一个绝不过量使用内存的算法,即系统整个内存地址空间不能超过swap+50%的RAM值,50%参数的设定是在overcommit_ratio中设定。

(4)关闭系统内核的巨大内存页支持

echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
#添加到/etc/rc.local
echo 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' >> /etc/rc.local
echo 'echo never > /sys/kernel/mm/transparent_hugepage/defrag' >> /etc/rc.local

(5)重启redis的服务器验证修改

redis-cli shutdown        #关闭redis
> /data/redis/redis.log    #清空redis日志
redis-server /usr/local/redis/conf/redis.conf        #启动redis cat /data/redis/redis.log           #查看redis日志
:C Aug ::42.049 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
:C Aug ::42.050 # Redis version=4.0., bits=, commit=, modified=, pid=, just started
:C Aug ::42.050 # Configuration loaded
_._
_.-``__ ''-._
_.-`` `. `_. ''-._ Redis 4.0. (/) bit
.-`` .-```. ```\/ _.,_ ''-._
( ' , .-` | `, ) Running in standalone mode
|`-._`-...-` __...-.``-._|'` _.-'| Port:
| `-._ `._ / _.-' | PID: 8065
`-._ `-._ `-./ _.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' | http://redis.io
`-._ `-._`-.__.-'_.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' |
`-._ `-._`-.__.-'_.-' _.-'
`-._ `-.__.-' _.-'
`-._ _.-'
`-.__.-' :M Aug ::42.055 # Server initialized
:M Aug ::42.055 * DB loaded from disk: 0.000 seconds
:M Aug ::42.055 * Ready to accept connections

为php安装redis客户端扩展

(1)获取源码包

wget https://github.com/phpredis/phpredis/archive/2.2.4.tar.gz

(2)安装

unzip phpredis-master.zip       #解压
cd /usr/src/phpredis-master/
/usr/local/php/bin/phpize

如果出现以下报错

Configuring for:
PHP Api Version:
Zend Module Api No:
Zend Extension Api No:
Cannot find autoconf. Please check your autoconf installation and the
$PHP_AUTOCONF environment variable. Then, rerun this script.
yum install m4 autoconf         #安装这些解决
/usr/local/php/bin/phpize #再次执行
./configure --with-php-config=/usr/local/php/bin/php-config
#编译安装
make; make install

(3)修改php.ini设置,重启php

echo "extension = redis.so" >> /usr/local/php/lib/php.ini
#将php.ini配置文件中的extension_dir修改成如下:
extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/"

redis 概述及部署 安装php和python客户端

安装Python redis客户端操作redis

wget https://pypi.python.org/packages/source/r/redis/redis-2.10.1.tar.gz
tar xf redis-2.10..tar.gz
cd redis-2.10.
python setup.py install

开发python程序操作redis

python
import redis #引用redis支持库
r = redis.Redis(host='192.168.50.157',port='',password='') #建立redis数据库的连接对象(面向对象方式)
r.set('name','wk') #操作对象调用set方法写入数据
True
r.get('name') #操作对象调用get方式读取数据
'wk'
 

 
 

redis 概述及部署 安装php和python客户端的更多相关文章

  1. Redis概述以及Linux安装

    Redis 概述 Redis是什么 Redis,Remote Dictionary Server,远程字典服务.是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.key-v ...

  2. Apache Ignite 学习笔记(一): Ignite介绍、部署安装和REST/SQL客户端使用

    Apache Ignite 介绍 Ignite是什么呢?先引用一段官网关于Ignite的描述: Ignite is memory-centric distributed database, cachi ...

  3. Redis3.2集群部署安装

    Redis集群部署安装 Linux版本:CentOS release 6.9 Redis 版本:redis-3.2.12.tar.gz 1.执行解压命令 tar -xzf redis-3.2.12.t ...

  4. Docker+Redis镜像的原理以及部署安装(超详解附截图)

    文章来源:公众号-智能化IT系统. 一. DOCKER介绍 Docker简介 (1)Docker 是一个开源的应用容器引擎,基于 Go 语言,并遵从Apache2.0协议开源. (2)Docker 可 ...

  5. 第四百零一节,Django+Xadmin打造上线标准的在线教育平台—生产环境部署virtualenv虚拟环境安装,与Python虚拟环境批量安装模块

    第四百零一节,Django+Xadmin打造上线标准的在线教育平台—生产环境部署virtualenv虚拟环境安装,与Python虚拟环境批量安装模块 virtualenv简介 1.安装virtuale ...

  6. redis 概述、windows版本下载启动访问退出安装、中文乱码、RedisDesktopManager下载

    redis 概述 redis的key是string类型的:value有多种类型,但放入的不是特定类型数据,添加的都是string,只是redis把这些值组织成了各种数据结构.key和相应的值都是str ...

  7. Python基础学习(一)之Python的概述与环境安装

    Python介绍 Python语言介绍 Python是一门高级的.面向对象的.解释性.脚本语言. 高级语言:贴近开发者,对应底层语言,底层语言贴近机器:java.C#.php .ruby 面向对象对应 ...

  8. 三十九.NoSQL概述 部署Redis服务 、 部署LNMP+Redis

    1. 搭建Redis服务器 在主机 192.168.4.50 上安装并启用 redis 服务 设置变量test,值为123 查看变量test的值   1.1 搭建redis服务器 1.1.1 安装re ...

  9. Redis 部署安装

    一.Redis介绍 Redis是当前比较热门的NOSQL系统之一,它是一个key-value存储系统.和Memcache类似,但很大程度补偿了Memcache的不足,它支持存储的value类型相对更多 ...

随机推荐

  1. 好吧,CSS3 3D transform变换,不过如此!

    一.写在前面的秋裤 早在去年的去年,我就大肆介绍了2D transform相关内容.看过海贼王的都知道,带D的家伙都不是好惹的,2D我辈尚可以应付,3D的话,呵呵,估计我等早就在千里之外被其霸气震晕了 ...

  2. java四大名著

    java编程思想effective Javajava核心技术java编程语言 外加:  深入理解java虚拟机 自己动手写java虚拟机 java并发编程的艺术 java常用算法手册 其他计算机需要看 ...

  3. careercup-递归和动态规划 9.4

    9.4 编写一个方法,返回某集合的所有子集. 类似leetcode:Subsets 解法: 解决这个问题之前,我们先要对时间和空间复杂度有个合理的评估.一个集合会有多少子集?我们可以这么计算,生成了一 ...

  4. 25个超有用的 AngularJS Web 开发工具

    AngularJS是为了克服HTML在构建应用上的不足而设计的.HTML是一门很好的为静态文本展示设计的声明式语言,改善了JavaScript. 下面我要说的就是25个超有用的AngularJS工具, ...

  5. 关于WIFI DIRECT功能的

    http://processors.wiki.ti.com/index.php/WiFi_Direct_Configuration_Scripts#p2p_find      https://wire ...

  6. Mybatis Generator生成数据库自带的中文注释

    1.相关jar包 <!-- mybatis生成 jar包 --> <dependency> <groupId>org.mybatis.generator</g ...

  7. cobbler一键批量安装系统

    cobbler是一个可以实现批量安装系统的Linux应用程序.它有别于pxe+kickstart,cobbler可以实现同个服务器批量安装不同操作系统版本. 一.系统环境准备及其下载cobbler 1 ...

  8. sublime text 3 3103 注册码

    —– BEGIN LICENSE —– Ryan Clark Single User License EA7E-812479 2158A7DE B690A7A3 8EC04710 006A5EEB 3 ...

  9. mybatis查询语句的背后之参数解析

    转载请注明出处... 一.前言 通过前面我们也知道,通过getMapper方式来进行查询,最后会通过mapperMehod类,对接口中传来的参数也会在这个类里面进行一个解析,随后就传到对应位置,与sq ...

  10. ultraEdit MAC 破解方法

    安装了个UltraEdit 但是需要验证码,太麻烦了,破解方法: 拷贝附件(command +c )然后在MAC的底下点击访达==>应用程序==>UltraEdit==>右击 显示包 ...