memcached

memcached键值对操作

人盡茶涼 提交于 2020-02-06 05:23:55
(0)quit 退出memcache (1)set set key flags exptime bytes 【noreply】 value flags 可以包括键值对的整型参数,客户机使用它存储关于键值对的额外信息 exptime 缓存时间,单位是秒,0表示永远 bytes 缓存中存储的字节数 noreply 告知服务不需要返回数据 返回结果:stored、error set userId 0 0 5 12345 STORED (2)add(用于添加不存在的键,如果存在,在不改变键值) 用法和set相同 (3)replace(替换已经存在的键值,如果不存在,替换失败) 语法和set相同 (4)append 向后追加(用于对已存在的键追加值) 语法和set相同 (5)prepend 向前追加(用于已存在的键) (6)cas (check and set) 用于执行一个检查并设置的操作,用于已存在 键 cas key flags exptime bytes unique_cas_token【noreply】 value set c 0 900 9 memcached STORED gets c VALUE c 0 9 6 //6位token值 memcached END cas c 0 900 5 6 abcde STORED get c VALUE c 0 5 abcde END

分布式缓存集群方案特性使用场景(Memcache/Redis(Twemproxy/Codis/Redis-cluster))优缺点对比及选型

蓝咒 提交于 2020-02-05 04:49:59
分布式缓存集群方案特性使用场景(Memcache/Redis(Twemproxy/Codis/Redis-cluster))优缺点对比及选型 分布式缓存特性: 1) 高性能:当传统数据库面临大规模数据访问时,磁盘I/O 往往成为性能瓶颈,从而导致过高的响应延迟.分布式缓存将高速内存作为数据对象的存储介质,数据以key/value 形式存储,理想情况下可以获得DRAM 级的读写性能; 2) 动态扩展性:支持弹性扩展,通过动态增加或减少节点应对变化的数据访问负载,提供可预测的性能与扩展性;同时,最大限度地提高资源利用率; 3) 高可用性:可用性包含数据可用性与服务可用性两方面.基于冗余机制实现高可用性,无单点失效(single point of failure),支持故障的自动发现,透明地实施故障切换,不会因服务器故障而导致缓存服务中断或数据丢失.动态扩展时自动均衡数据分区,同时保障缓存服务持续可用; 4) 易用性:提供单一的数据与管理视图;API 接口简单,且与拓扑结构无关;动态扩展或失效恢复时无需人工配置;自动选取备份节点;多数缓存系统提供了图形化的管理控制台,便于统一维护; 5) 分布式代码执行(distributed code execution):将任务代码转移到各数据节点并行执行,客户端聚合返回结果,从而有效避免了缓存数据的移动与传输.最新的Java 数据网格规范JSR

分布式缓存(MemCached)

孤街浪徒 提交于 2020-02-05 04:48:09
  最近在为找工作做准备,就看了好多.NET基础知识,发现很多关于页面之间传值的方式,其中就有Session,但也发现Session在实际使用过程中有很多问题。最典型也最重要大的BUG就是如果IIS中同时有很多进程发生时,内存不够用那么有垃圾回收机制,就会导致Session的丢失。解决方法有:可以用Sate Server或SQL Server数据库的方式存储Session,可是这两种方式都有个缺点就是处理速度慢,无法捕获END事件。因此,我便想那么还有什么方式可以解决这一问题呢?   结果就是使用分布式缓存(MemCached)。那么什么是分布式缓存呢?它又有什么优点呢?下面就是我通过查找资料总结的一些心得。 一、Memcached是什么? Memcached是由Danga Interactive开发的,高性能的,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度。 二、Memcached能缓存什么? 通过在内存里维护一个统一的巨大的hash表,Memcached能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。 三、Memcached快么? 非常快。Memcached使用了libevent(如果可以的话,在linux下使用epoll)来均衡任何数量的打开链接,使用非阻塞的网络I/O,对内部对象实现引用计数(因此,针对多样的客户端

大型分布式系统中的缓存架构

十年热恋 提交于 2020-02-04 22:37:02
大型分布式系统中的缓存架构 本文主要介绍大型分布式系统中缓存的相关理论,常见的缓存组件以及应用场景。 缓存概述 缓存概述 缓存的分类 缓存主要分为四类,如下图: 缓存的分类 CDN 缓存 CDN(Content Delivery Network 内容分发网络)的基本原理是广泛采用各种缓存服务器,将这些缓存服务器分布到用户访问相对集中的地区或网络中。 在用户访问网站时,利用全局负载技术将用户的访问指向距离最近的工作正常的缓存服务器上,由缓存服务器直接响应用户请求。 应用场景:主要缓存静态资源,例如图片,视频。 CDN 缓存应用如下图: 未使用 CDN 缓存 使用 CDN 缓存 CDN 缓存优点如下图: 优点 反向代理缓存 反向代理位于应用服务器机房,处理所有对 Web 服务器的请求。 如果用户请求的页面在代理服务器上有缓冲的话,代理服务器直接将缓冲内容发送给用户。 如果没有缓冲则先向 Web 服务器发出请求,取回数据,本地缓存后再发送给用户。通过降低向 Web 服务器的请求数,从而降低了 Web 服务器的负载。 应用场景:一般只缓存体积较小静态文件资源,如 css、js、图片。 反向代理缓存应用如下图: 反向代理缓存应用图 开源实现如下图: 开源实现 本地应用缓存 指的是在应用中的缓存组件,其最大的优点是应用和 Cache 是在同一个进程内部,请求缓存非常快速,没有过多的网络开销等。

Memcache php配置

不羁岁月 提交于 2020-02-02 21:50:50
1、下载相关版本php_memcache.dll扩展文件 http://pan.baidu.com/share/link?shareid=2718974422&uk=3978399093 下载对应扩展文件,放到PHP的相关目录:php\ext 下 1.1. 修改配置文件 (配置方式有三种,以修改php.ini为主) D:\xampp\tmp a. 在 php.ini 中全局设置(* 需要重启服务器) 首选方案 * session.save_handler = memcache session.save_path = "tcp://127.0.0.1:11211" b. 或者某个目录下的 .htaccess php_value session.save_handler "memcache" php_value session.save_path "tcp://127.0.0.1:11211" c. 也可以在某个一个应用中(适合测试验证) ini_set("session.save_handler", "memcache"); ini_set("session.save_path", "tcp://127.0.0.1:11211"); 注: 使用多个 memcached server 时用逗号”,”隔开 1.2. 修改PHP配置 php.ini * extension=php

用 memcache 来存储 session

限于喜欢 提交于 2020-02-02 06:37:43
PECL :: Package :: memcache 2.1.1 版本的 Changelog 中有一条: - Added experimental session storage support. You can use memcached as session storage. 也就是可以直接用 memcache 来作 PHP 的 session.save_handler。 1. 安装 memcached ,还是那套 ./configure; make; make install,注意 memcached 用 libevent 来作事件驱动,所以要先安装有 libevent。 2. 安装 pecl::memcache ,用 pecl 命令行工具安装: pecl install memcache 或直接从源码安装: phpize ./configure make make install 将 php.ini 中 extension=memcache.so 打开,重启一下 apache,查看 phpinfo 中的 "Registered save handlers" 会有 "files user memcache" 这3个可用。 3. 修改配置文件,在 php.ini 中全局设置: session.save_handler = memcachesession.save_path =

搭建memcache

孤街醉人 提交于 2020-02-02 05:53:20
什么是memcache? MemCache是一个自由、源码开放、高性能、分布式的分布式内存对象缓存系统, MemCaChe是一个存储键值对的HashMap, 在内存中对任意的数据(比如字符串、对象等)使用key-value存储, 数据可以来自数据库调用、API调用,或者页面渲染的结果。MemCache设计理念就是小而强大, 它简单的设计促进了快速部署、易于开发并解决面对大规模的数据缓存的许多难题 一台做测试端,一台做服务端 服务端 1、安装试件库 yum install gcc gcc-c++ make -y tar zxvf memcached-1.5.6.tar.gz -C /opt tar zxvf libevent-2.1.8-stable.tar.gz -C /opt 2、手工编译安装 进入libevent-2.1.8-stable #指定安装路径 ./configure --prefix=/usr/local/libevent make && make install cd ../memcached-1.5.6/ #指明路径 ./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/libevent make && make install #创建一个软连接 ln -s /usr/local

How can I serialize Jackson's JsonNode object?

蓝咒 提交于 2020-02-02 04:41:06
问题 I am replacing an in-house caching system with memcached but memcached client cannot cache the JsonNode objects since they don't implement Serializable . Is there any way you can achieve serializing a JsonNode object? Does Jackson provide Serializable equivalent of this class? 回答1: JSON is best serialized by writing it out as bytes. In Jackson, it is done using ObjectMapper , for example by: byte[] raw = objectMapper.writeValueAsBytes(root); MemCache does not really need Serializable since it

用 memcache 来存储 session

微笑、不失礼 提交于 2020-02-02 04:02:54
转自:http://weixiang096.blog.163.com/blog/static/12747355520119289744424/ PECL :: Package :: memcache 2.1.1 版本的 Changelog 中有一条: - Added experimental session storage support. You can use memcached as session storage. 也就是可以直接用 memcache 来作 PHP 的 session.save_handler。 1. 安装 memcached ,还是那套 ./configure; make; make install,注意 memcached 用 libevent 来作事件驱动,所以要先安装有 libevent。 2. 安装 pecl::memcache ,用 pecl 命令行工具安装: pecl install memcache 或直接从源码安装: phpize ./configure make make install 将 php.ini 中 extension=memcache.so 打开,重启一下 apache,查看 phpinfo 中的 "Registered save handlers" 会有 "files user memcache" 这3个可用。 3.

php中实现session共享

喜夏-厌秋 提交于 2020-02-02 03:55:28
序:通常用户登录后,我们会把用户登录凭证保存在session中,这样用户在下次登录时会携带sessionid到服务器端,服务器端根据sessionid查找对应session数据是否存在,一次判断用户登录状态。php.ini中session默认是以文件的形式保存在磁盘目录下,但由于公司服务器做了集群,因此多台服务器之间需要实现session共享,具体解决方法是讲session单独存储在一台session共享服务器上,此处我们使用的是memcache。具体配置如下: 1.设置session用memcache来存储 方法I: 在 php.ini 中全局设置 session.save_handler = memcache session.save_path = "tcp://127.0.0.1:11211" 方法II: 某个目录下的 .htaccess : php_value session.save_handler "memcache" php_value session.save_path "tcp://127.0.0.1:11211" 方法III: 再或者在某个一个应用中: ini_set("session.save_handler", "memcache"); ini_set("session.save_path", "tcp://127.0.0.1:11211"); 使用多个