背景:

  在项目启动的选用了Memcached 作为缓存服务器,采用了Xmemcached作为客户端。在项目中使用了Shiro,为了给 Shiro 配置缓存的时候,采用了开源代码   https://github.com/mythfish/shiro-memcached 来实现 缓存服务器实现类。其他与项目自适应的修改,皆在当前类的基础上。

此后,Memcached 升级为了 CouchBase,本项目环境需与此对接。

环境:

  1、随着数据的增多,为了访问速度的更快,采用缓存服务器来缓解数据库的压力,目前项目采用的是 memcached 缓存服务器

  2、memcached的java 客户端有多种形式,目前采用 Xmemcached

  3、目前项目的框架是 Spring+SpringMVC+MyBatis+Shiro ,需要将 Xmemcached 与这些对应的技术结合起来

  4、Xmemcached 与 Spring的结合,参考:

  https://github.com/ragnor/simple-spring-memcached

  5、Shiro 与 Spring的结合,参考:

   https://github.com/mythfish/shiro-memcached

  6、memcached 升级为新的版本 Couchbase

   关于Couchbase的介绍与安装:http://developer.couchbase.com/documentation/server/4.5/getting-started/installing.html

    也可参考 我的另一篇博客  Couchbase的安装步骤

  7、由于Couchbase 是整合了 Membase、Memcached和CouchDB ,未改变其根本性功能,故 在其发挥与Memcached相同的功能的时候,可以就采用原有的Memcached 的使用方法!

  8、Couchbase 安装后,http://localhost:8091 是web 控制台访问路径。11211 是Memcached 访问端口,8091 是管理和操作端口,其他几个是用于管理和集群通讯的。

对比知识要点:

  由于我的环境使然,我只会去关注 couchbase 中与缓存相关的功能。

  先理解一下 Couchbase Server的结构。集群、Couchbase Server(在集群中每一个Couchbase是一个Node)

  

Cluster
一个cluster是一个包含一个或多个Couchbase Server实例而且作为一个逻辑上的cluster设置的集群。所有cluster内的node都是相同的,提供相同的功能。每个节点都可以管理cluster并提供其统计数据和操作信息。用户数据通过vBucket系统存储在整个cluster之中。

Couchbase Server 或 Node
一个在机器上运行着的Couchbase Server实例,无论是实体机器、虚拟机器、EC2或者其它环境。
所有Couchbase Server实例都是相同的,提供相同功能、接口和系统,包含相同的组成部件。

Couchbase Server使用buckets来提供数据管理服务。buckets是为数据准备的互相隔离的虚拟容器。一个bucket就是一个cluster内物理资源的一个逻辑上的分组,可以通过cluster被多个客户使用。Buckets提供了一种安全的组织、管理和分析数据资源的机制。

Couchbase Server中有两类bucket: 1) memcached buckets,以及 2) couchbase buckets.这两种bucket让你可以选择仅把数据缓存在内存里,还是既缓存在内存里也为了持久性同步到硬盘上。

有三种可以设置的bucket接口:
The default Bucket
  默认的default bucket是Couchbase 类型的bucket,预留11211端口且不需要SASL认证。当Couchbase Server安装成功时default bucket也自动安装了。这个bucket也可以在安装后卸载,如果需要再次添加,只需要在11211端口上以default为名称添加一个non-SASL类型的bucket即可。default bucket可以通过一个识别vBucket的智能客户端、一个ASCII客户端或者是不使用SASL认证的二进制客户端访问。
Non-SASL Buckets
  名称不是“default”的Non-SASL buckets 应该在除了11211以外的端口设置。一个端口上只能安排一个Non-SASL bucket。此类bucket可以通过一个识别vBucket的智能客户端、一个ASCII客户端或者是不使用SASL认证的二进制客户端访问。
SASL Buckets
  SASL认证的Couchbase类型buckets只能设置在11211端口,不同bucket通过名称和密码区别。SASL bucket不应该在11211以外的端口设置。此类buckets可以通过识别vBucket的智能客户端或支持SASL认证的二进制客户端访问,不可通过ASCII客户端访问。

与实际结合:

  安装完 CouchBase 后,登录 http://localhost:8091/  Couchbase的管理窗口,可以查看一下 各个页面,页面上都会有与上述概念相关的配置。

参考博客:Couchbase2.2使用手册(一)——介绍

由Memcached升级到 Couchbase的 Java 客户端的过程记录(一)的更多相关文章

  1. 由Memcached升级到 Couchbase的 Java 客户端的过程记录(二)

    Shiro提供了类似于Spring的Cache抽象,即Shiro本身不实现Cache,但是对Cache进行了又抽象,方便更换不同的底层Cache实现. shiro对缓存的支持 shiro并没有实现缓存 ...

  2. 由Memcached升级到 Couchbase的 Java 客户端的过程记录(三)

    采用之前的源码运行后,我们发现 只有一个配置信息 即servers=127.0.0.1:11211,即 Couchbase Server的服务所在ip 和端口,此时数据直接存在 default 中 根 ...

  3. memcached学习——常用命令+基于java客户端的3种简单实现(二)

    常用命令: memcached设计的原则就是简单,所以支持的命令也不是特别多~ 1.查看memcached的状态,主要用于分析内存的使用状况.优化内存分配等 stats 查看memcached的运行状 ...

  4. (转)Memcached 在windows下的java使用

    Memcached 在windows下的java使用   研究这个东东主要是为了解决在教务管理中选课系统的大并发情况下数据库频繁读写造成速度慢的问题,但要使用WEB服务器的内存,是不是可靠还需要验证, ...

  5. JAVA客户端API调用memcached两种方式

    1. memcached client for java客户端API:memcached client for java 引入jar包:java-memcached-2.6.2.jar package ...

  6. Memcached学习笔记 — 第四部分:Memcached Java 客户端-gwhalin(1)-介绍及使用

     介绍 Memcached java client是官方推荐的最早的memcached java客户端.最新版本:java_memcached-release_2.6.1. 官方下载地址:http ...

  7. 缓存系统MemCached的Java客户端优化历程

    Memcached 是什么? Memcached是一种集中式Cache,支持分布式横向扩展.这里需要解释说明一下,很多开发者觉得Memcached是一种分布式缓存系统,但是其实Memcached服务端 ...

  8. 转: memcached Java客户端spymemcached的一致性Hash算法

    转自:http://colobu.com/2015/04/13/consistent-hash-algorithm-in-java-memcached-client/ memcached Java客户 ...

  9. Memcached的几种Java客户端(待实践)

    其实现在来尝试Memcached的客户端估计会有点过气,因为现在大势基本都在Redis那边. Memcached Client目前有3种: Memcached Client for Java(已经停止 ...

随机推荐

  1. Android log 管理工具

    1.logger 项目地址: https://github.com/orhanobut/logger 2.KLog 项目地址:https://github.com/ZhaoKaiQiang/KLog ...

  2. 2016最新cocoapods安装流程,安装过程中遇到的问题及解决方法

    现在的cocoapods与之前比较.有很多不一样的地方.自己试了一试,终于搞定.现在大概纪录一下. 1.首先查看ruby是否是最新版的. ruby是通过rvm安装的所以需要先安装rvm后查看ruby是 ...

  3. 你真的了解UITabBarController吗?

    一:首先查看一下关于UITabBarController的定义 NS_CLASS_AVAILABLE_IOS(2_0) @interface UITabBarController : UIViewCo ...

  4. 几个常用的adb命令

    adb全程为Android Debug Bridge,字面意思就是安卓调试桥接.就是android系统提供的一套 工具帮我们建议一个连接android设备的通道,然后在电脑上发送一些指令,完成工作. ...

  5. python之很好的网站

    1.python官方开发者文档查询和python下载网站 2.

  6. [Java编程思想-学习笔记]第4章 控制执行流程

    4.1  return 关键字return有两方面的用途:一方面指定一个方法结束时返回一个值:一方面强行在return位置结束整个方法,如下所示: char test(int score) { if ...

  7. StringBuilder用法

    //来自MSDN,不太懂英文可以使用百度翻译. //using System; //using System.Text; //public sealed class App //{ // static ...

  8. 迁移Reporting Services的方法与WMI错误

    今天上午,接到一个任务:迁移SQL SERVER 2005的报表服务到另外一台SQL SERVER 2008服务器,结果等我备份了两边服务器的ReportServer,ReportServerTemp ...

  9. 0028 Java学习笔记-面向对象-Lambda表达式

    匿名内部类与Lambda表达式示例 下面代码来源于:0027 Java学习笔记-面向对象-(非静态.静态.局部.匿名)内部类 package testpack; public class Test1{ ...

  10. C++基础——函数指针 函数指针数组

    ==================================声明================================== 本文版权归作者所有. 本文原创,转载必须在正文中显要地注明 ...