Docker笔记二:Lumen + Redis

  Lumen 基于 Laravel 打造,专为构建微服务和 APIs 而生。Lumen与Redis服务端通信可通过Predis(PHP库)或者PhpRedis(PHP的C扩展)来实现,建议使用PhpRedis,其性能更高。Lumen下使用Predis和PhpRedis都需引入illuminate/redis(PHP库),illuminate/redis(PHP库)都对Predis和PhpRedis(Laravel 5.3以上)进行了很好的封装,但illuminate/redis(PHP库)又依赖predis/predis(PHP库),故安装 illuminate/redis时会自动引入predis/predis(PHP库)。

  Redis 与 Memcached 均为常用的 key-value 分布式内存对象缓存系统,可提供数据缓冲和数据共享能力,Redis 支持持久化,而 memcached 不支持持久化,发生重启后数据不会自动恢复。

  关于Memcached:

  • memcached基于hashmap来实现对内存对象的创建与管理,容量(哈希表中桶的数量)和加载因子(容量自动增加之前可以达到多满的一种尺度)影响其性能。当哈希表中的条目数超出了加载因子与当前容量的乘积时,则要对该哈希表进行 rehash (重建内部数据结构),从而哈希表将具有大约两倍的桶数。在Java编程语言中,加载因子默认值为0.75,默认哈希表元为101。
  • memcached如果运行在默认状态下,应放置在防火墙后端;
  • 在内置空间被占满之后,memcached采用Least Recently Used(LRU)机制替换掉旧的内容;
  • 基于libevent的事件处理,运行多线程处理多客户端并发连接请求,虽说也支持分布式,但服务端并没有分布式功能,彼此不能互相通信,完全依赖于客户端实现,故障转移也不提供冗余节点,一旦某节点发生故障将导致相应的数据不可用;
  • 客户端libmemcached可采用多种哈希算法(MD5、CRC等)计算key,对非标量类型数据如数组、对象(非资源类型才能被序列化)等将先进行序列化然后再发送给服务端,支持Multi操作;
  • CAS(Check And Set)是Memcached中比较方便的一种防止竞争修改资源的方法
    A 64bit "CAS" value, which is kept unique.
  • 支持文本协议和二进制协议两种主要的协议。此外,还支持子协议SASL Authentication、Range operations。相关信息参考 https://github.com/memcached/memcached/wiki

    下边这段是关于文本协议“noreply”的描述,同时建议使用二进制协议:

    Most ASCII commands allow a "noreply" version. One should not normally use this with the ASCII protocol, as it is impossible to align errors with requests. The intent is to avoid having to wait for a return packet after executing a mutation command (such as a set or add).
    
    The binary protocol properly implements noreply (quiet) statements. If you have a client which supports or uses the binary protocol, odds a
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值