PHP中使用redis的基础
来源:赵加美     阅读:655
北京的店
发布于 2018-11-09 22:53
查看主页

Redis 是开源免费的,是一个高性能的key-value数据库。

Redis特点

Redis 与其余 key - value 缓存产品有以下三个特点:

1.Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。

2.Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。

3.Redis支持数据的备份,即master-slave模式的数据备份。

redis优势:性能高、丰富的数据类型、原子性、丰富的特性

redis支持5种数据类型:string字符串、hash哈希、list列表、set集合、zset有序集合

单机redis支持多个数据库,但是多个数据库是隔离的,不能共享,假如是集群,就没有数据库的概念

redis键命令https://redis.io/commands

常用:

redis发布订阅

redis发布订阅(pub/sub)是一种消息通信模式:发送者发送消息,订阅者接收消息

redis用户端可以订阅任意数量的频道

当有新消息通过PUBLISH命令发送给频道时,这个消息就会被发送给订阅这个频道的多个用户端

订阅subscribe,发布publish

redis事务

redis事务一次可以执行多个命令,并且:

批量操作在发送EXEC命令前被放入队列缓存

收到EXEC命令后进入事务执行,事务中任意命令执行失败,其他的命令仍然被执行

在事务执行过程中,其余用户端提交的命令请求不会插入到事务执行命令序列中

一个事务从开始到执行会经历三个阶段:开始事务->命令入列->执行事务

单个redis命令的执行是原子性的,但是redis事务的执行不是原子性的。事务可以了解为一个打包执行的批量执行脚本,但是批量指令的执行不是原子化的操作,所以中间某条指令的失败不会导致前面已经执行指令的回滚,也不会造成后续指令的不执行。

用户端连接

redis通过监听一个tcp端口或者者unix socket的方式来接收来自用户端的连接,当一个连接建立后,redis内部会进行以下少量操作:

1.首先,用户端socket会被设置为非阻塞模式,由于redis在网络事件解决上采用的是非阻塞多路复用模型

2.而后为这个socket设置TCP_NODELAY属性,禁用Nagle算法(允许小包发送,性能高、延时少)

3.而后创立一个可读的文件事件用于坚定这个用户端socket的数据发送

redis是一种基于用户端-服务端模型以及请求/相应协议的TCP服务,意味着通常情况下请求会遵循以下步骤:

用户端向服务端发送一个查询请求,并且监听socket返回,通常是以阻塞模式,等待服务端响应

服务端解决命令,并且将结果返回用户端

管道技术

redis的管道技术,在服务端未响应的时候,用户端可以持续向服务端发送请求,并最终一次性读取所有的服务端响应。管道技术最明显的优势是提高了redis的服务性能

redis分区

分区是分割数据到多个redis实例的解决过程,因而每个实例只保存key的一个子集

分区的优势:

分区的不足:

添加或者者删除容量时也比较复杂。redis集群大多数支持在运行时添加、删除节点的透明数据平衡能力,但是相似于用户端分区、代理商等其余系统,则不支持这项特性

分区类型:范围分区&哈希分区

范围分区的不足,是需要一个区间范围到实例的映射表,这个表要被管理,同时还需要各种对象的映射表

免责声明:本文为用户发表,不代表网站立场,仅供参考,不构成引导等用途。 系统环境 服务器应用
相关推荐
清新韩系微信聊天背景
Machine Leanring 环境准备——搭建 Jupyter Notebook
大数据开发和java开发有什么不同?
Spring boot使用ProGuard实现代码混淆
干饭人干饭魂,年轻人干了这碗多线程,就是人上人!
首页
搜索
订单
购物车
我的