本文实例讲述了PHP数据库操作redis用法。分享给大家供大家参考,具体如下:

memcache虽然好用,解决了数据库遇到高并发时的IO问题,但还有很多问题丞待解决:
1、数据持久性问题,memcache用内存进行存储,一旦memcache服务器宕机,那么所存储的数据全部丢失。
2、memcache存储的数据类型单一,只支持key-value型的数据,要存储复杂类型的数据,必然需要PHP脚本的大量逻辑操作。
redis基本介绍
redis也是一个内存非关系型数据库,它拥有memcache在数据存储上的全部优点,而且在memcache的基础上(memcache的介绍可以看前面一篇:https://www./article/121315.htm
增加了数据持久性功能,redis用rdb和aof两种方式实现数据持久性,在服务器突然宕机时也能几乎保留已存的全部数据。
增加了string(字符串)、set(集合)、sorted_set(有序集合)、hash(哈希)、list(链表)数据类型,方便了多类型的存储和数据库操作。
增加了安全验证(可为服务器设置连接密码)。
redis的主从分离等系统更完善(官方开发)。
原生支持发布/订阅、队列、缓存等工具。
当然,相比较memcache,它的数据库操作也较为复杂。
redis的应用场景和安装
redis除了可以用在memcache能用的地方,它还可以用在:
可以用链表来存储数据,读取其最新信息。
可以用有序列表存储数据,读取其排行榜数据
可以用集合来存储关注/被关注信息。
在官网(http://redis.io/)下载到它的最新版本,直接解压,因为redis官方已经编译过了,直接进行make / make test ,在make install时可以指定其安装路径。
安装完成后,将安装包里的redis的conf文件mv到安装目录的bin目录下,它是配置和启动redis所必需的。
除此,安装目录文件下bin目录里还有如下文件。
redis-benchmark //性能测试工具 -n xxx 表示发出xxx条命令用来测试
redis-check-aof //检查aof日志的工具
redis-check-dump //检查rbd日志的工具
redis-cli //客户端
redis-server //redis的服务器进程
redis-sentinel //redis哨兵模式的进程
我们用vim打开redis.conf来简单配置redis服务器。
将daemonize 选项改为yes来后台运行
database n 设置一个redis服务器里有n个服务器,默认为0-15共16个
port n 来设置redis服务器的监听端口
设置requirepass yourpassword来设置密码,客户端连接后用auth password来通过验证
我们使用./redis-server ./redis.conf命令来打开redis服务器。
使用./redis-cli [-p port]来连接服务器(默认6379)。
redis的命令
基本(包括string字符串类型)命令
set key value [ex|px n] //设置值[并设置过期时间为n秒/毫秒] get key //获取值 del key //删除值 incby|decby key n //将key值自增或自减n rename key newkey//覆盖原来的 select n//选择第n个数据库 ttl key //查询key的过期时间,-1表示永不过期,不存在的为-2 expire key n //设置key的过期时间为n秒 type key //获取key的存储类型 flushdb //清除当前数据库中的值 shutdown [nosave]//关闭服务器[不存储]
list(链表)命令
lpush/rpush list value1 [value2 value3...] //将value压入链表头/尾 lpop/rpop list //弹出链表头/尾的值 llen list //获取链表长度
set(集合)命令
sadd set value //往集合中添加value smembers set //查看集合中的全部数据 srem set value1[value2...]//删除集合中的元素 sismember set value //判断value是否是集合中的一个元素
sorted_set(有序集合)命令
zadd sorted_set score1 key1 score2 key2 score3 key3...向有序集合中添加key,并定义其score,集合会用score对其排序
zrange sorted_set a b [withscores]从第a到第b显示有序列表中的值 b为-1时显示全部,[显示各个值的score]
zrank/zrevrank sorted_set key 正序/倒序显示key在有序集合中的位置
zrem sorted_set key 删除有序集合中的key
zcard sorted_set [m n]计算有序集合中[score在m到n之间的]一共有多少个
hash(哈希类型)命令
hset hashset key value 设置hash表key的值为value
hget hashset key 获取hash表的key值
hdel hashset key 删除hash表中的一个key
hlen hashset 获取hash表的长度
redis命令繁多,这里只列了一点简单的,具体命令可以其官网或其中文站http://www.redis.cn/查看翻译文档
redis的事务和发布、订阅
redis中的事务与mysql的类似,只有语句有些不同。
redis mysql
开始事务 multi start transition
事务中的query语句
执行事务 exec commit
回滚事务 discard roll back
对于并发影响,redis有watch语句控制,被watch语句监测的key值一旦在事务提交前发生变化,则事务自动被取消回滚。
watch key1 [key2...]
unwatch 取消所有监测。
redis原生发布和订阅功能,它类似于设计模式中的观察者模式,被订阅对象一旦发布了新的消息,那么所有订阅对象都会收到这条消息。使用方式为:
subscribe key //订阅某个key,如果这个key发布了新的消息,则会收听到 public key value//发布消息key,值为value,返回值是收到这个消息的人的个数 unsubscribe key //取消监听 psubscribe key1 key2/pattrn //[根据模式]监听多个key
redis的数据持久化
redis通过rdb和aof两种方式实现数据持久化,两种数据持久化方式都会占用CPU资源,拖慢redis的执行效率,一般两种模式配合使用。
rdb方式的主要原理就是达到某一写入条件后把内存中的所有数据的快照保存一份到磁盘上,数据恢复时用数据快照恢复。
aof方式是通过将每条redis执行命令记录入文本文件,恢复数据时重复执行记录的命令。
rdb方式实现数据持久化
用save/bgSave命令可以主动使用rdb方式[后台]存储rdb
修改redis.conf文件进行配置
save m n //在m秒内有n次修改即进行一次快照,保存点很重要,一般会配置多个条件,满足其中之一就保存 stop-writes-on-bgsave-error yes //在进行快照的过程中如果出错,则停止写入 rdbcompression yes //设置进行数据压缩 rdbchecksum yes //导入数据时检查文件是否损坏 dbfilename xxx.rdb //导出的文件名 dir path //导出的文件路径
aof方式实现数据持久化
aof持久化的问题在于将每条指令都记录下来,即使是对一个键的反复操作,这样会导致aof文件越来越大,使用aof重写将会大大减小aof文件的体积,因为它是在最后将数据库内数据的状态统一逆化为命令,而不论一个key经过了多少次变化。使用 bgrewrite 命令可手动重写aof文件。
配置redis.conf文件:
noapppendfsync-on-rewrite yes //设置导出rdb时停止写入aof,aof会被写在内存队列里,dump rdb 完成后统一进行写入操作。 appendfsync everysec //每秒写入一次 appendfilename //path/filename.aof auto-aof-rewrite-percentage 100 //文件大小增长100%时重写 auto-aof-rewrite-min-size 64m //文件至少达到64m时重写
redis的主从复制
主从复制时,主从都要以自己的.conf文件来启动服务器。主服务器可以将rdb关闭,以从服务器来产生rdb,加快主服务器的速度。
从服务器复制一个redis6380.conf文件,设置端口,pid存放文件,只读,主服务器的密码。
port 6380 pidfile filename slave-read-only yes masterauth password
设置完成后,分别用不同的conf文件打开服务器。
考虑到主服务器宕机的情况,我们用sentinel redis哨兵来监测服务器状态,在主服务器宕机之后做出反应。sentinel是redis集成的,我们只需要将安装包里的sentinel.conf文件拷贝到redis/bin目录下,使用redis-sentinel进程文件来启动服务器即可。
port 26379 //sentinel监听的端口号 daemonize yes //后台启动进程 sentinel monitor mymaster 192.168.100.211 6379 2 //设置主进程ip和端口号,并设置两个哨兵发现主服务器长时间无法连接才判定其宕机 sentinel down-after-milliseconds mymaster 30000 //30000毫秒连接不上判定为无法连接 sentinel parallel-syncs mymaster 1 //一个主服务器打开时,同时复制的从服务器数,太大的话会造成服务器瞬间拥堵 sentinel failover-timeout mymaster 900000 //在90000秒内哨兵不再试图恢复原主服务器
PHP操作redis服务器
安装好php的redis扩展后(具体可参考前面的文章 Linux下php安装Redis扩展的方法 https://www./article/99775.htm),就可以直接使用redis的类函数库了。
如下是典型的redis应用。
$redis=new Redis(); //实例化一个Redis对象
$redis->connect('host',port); //连接redis服务器
$redis->auth('password'); //用密码认证
$redis->set($key,$value[,$expire_time]);//设置一个值
$content=$redis->get($key); //获取值
具体函数使用可以看官方的文档:https://github.com/phpredis/phpredis
更多关于PHP相关内容感兴趣的读者可查看本站专题:《php+redis数据库程序设计技巧总结》、《php面向对象程序设计入门教程》、《PHP基本语法入门教程》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。
# PHP
# 数据库
# redis
# php操作redis数据库常见方法实例总结
# PHP操作Redis数据库常用方法示例
# PHP实现的redis主从数据库状态检测功能示例
# PHP的Laravel框架结合MySQL与Redis数据库的使用部署
# php实现redis数据库指定库号迁移的方法
# 30个php操作redis常用方法代码例子
# redis 队列操作的例子(php)
# php结合redis实现高并发下的抢购、秒杀功能的实例
# php Session存储到Redis的方法
# PHP操作Redis常用技巧总结
# php+redis实现商城秒杀功能
# php操作redis缓存方法分享
# php操作Redis数据库基本示例【安装、连接、设置、查询、断开】
# 两种
# 链表
# 重写
# 可以用
# 程序设计
# 多个
# 增加了
# 时间为
# 用在
# 每条
# 官网
# 值为
# 包里
# 安装目录
# 自己的
# 的人
# 客户端
# 端口号
# 操作技巧
# 文档
相关文章:
重庆网站制作公司哪家好,重庆中考招生办官方网站?
移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?
表情包在线制作网站免费,表情包怎么弄?
移民网站制作流程,怎么看加拿大移民官网?
免费ppt制作网站,有没有值得推荐的免费PPT网站?
如何配置WinSCP新建站点的密钥验证步骤?
广东专业制作网站有哪些,广东省能源集团有限公司官网?
在线ppt制作网站有哪些,请推荐几个好的课件下载的网站?
湖北网站制作公司有哪些,湖北清能集团官网?
建站上传速度慢?如何优化加速网站加载效率?
常州企业网站制作公司,全国继续教育网怎么登录?
宝塔Windows建站如何避免显示默认IIS页面?
如何用IIS7快速搭建并优化网站站点?
阿里云网站制作公司,阿里云快速搭建网站好用吗?
家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?
建站中国必看指南:CMS建站系统+手机网站搭建核心技巧解析
如何在云主机快速搭建网站站点?
香港网站服务器数量如何影响SEO优化效果?
建站主机解析:虚拟主机配置与服务器选择指南
巅云智能建站系统:可视化拖拽+多端适配+免费模板一键生成
如何基于云服务器快速搭建网站及云盘系统?
c# Task.Yield 的作用是什么 它和Task.Delay(1)有区别吗
网站制作的方法有哪些,如何将自己制作的网站发布到网上?
如何通过虚拟主机快速完成网站搭建?
动图在线制作网站有哪些,滑动动图图集怎么做?
建站主机助手选型指南:2025年热门推荐与高效部署技巧
建站之星五站合一营销型网站搭建攻略,流量入口全覆盖优化指南
C++时间戳转换成日期时间的步骤和示例代码
零基础网站服务器架设实战:轻量应用与域名解析配置指南
免费网站制作模板下载,除了易企秀之外还有什么H5平台可以制作H5长页面,最好是免费的?
公司网站制作价格怎么算,公司办个官网需要多少钱?
C++如何编写函数模板?(泛型编程入门)
如何在Golang中使用replace替换模块_指定本地或远程路径
网站设计制作企业有哪些,抖音官网主页怎么设置?
教育培训网站制作流程,请问edu教育网站的域名怎么申请?
制作营销网站公司,淘特是干什么用的?
建站之家VIP精选网站模板与SEO优化教程整合指南
如何在阿里云部署织梦网站?
企业微网站怎么做,公司网站和公众号有什么区别?
建站之星2.7模板快速切换与批量管理功能操作指南
一键网站制作软件,义乌购一件代发流程?
,想在网上投简历,哪几个网站比较好?
,石家庄四十八中学官网?
如何在景安云服务器上绑定域名并配置虚拟主机?
如何用免费手机建站系统零基础打造专业网站?
小说建站VPS选用指南:性能对比、配置优化与建站方案解析
建站之星后台密码遗忘或太弱?如何重置与强化?
微信推文制作网站有哪些,怎么做微信推文,急?
云南网站制作公司有哪些,云南最好的招聘网站是哪个?
大连网站制作公司哪家好一点,大连买房网站哪个好?
*请认真填写需求信息,我们会在24小时内与您取得联系。