本文实例讲述了PHP数据库操作redis用法。分享给大家供大家参考,具体如下:
memcache虽然好用,解决了数据库遇到高并发时的IO问题,但还有很多问题丞待解决:
1、数据持久性问题,memcache用内存进行存储,一旦memcache服务器宕机,那么所存储的数据全部丢失。
2、memcache存储的数据类型单一,只支持key-value型的数据,要存储复杂类型的数据,必然需要PHP脚本的大量逻辑操作。
redis基本介绍
redis也是一个内存非关系型数据库,它拥有memcache在数据存储上的全部优点,而且在memcache的基础上(memcache的介绍可以看前面一篇:http://www.jb51.net/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的事务和发布、订阅