- 博客(22)
- 收藏
- 关注
原创 十. redis java client
redis主页上列出的java 客户端有JDBC-Redis JRedis Jedis三种,下面分别介绍三种客户端的优缺点及其他相关的工具. 支持redis版本 性能 维护 推荐 JDBC-Redis not good JRedis 1
2011-02-16 10:50:00 2052
原创 [转]Redis几个认识误区
转自timyang:http://timyang.net/data/redis-misunderstanding/ 前几天微博发生了一起大的系统故障,很多技术的朋友都比较关心,其中的原因不会超出James Hamilton在On Designing and Deploying Internet-Scale Service(1)概括的那几个范围,James第一条经验“Design for failure”是所有互联网架构成功的一个关键。互联网系统的工程理论其实非常简单,James paper中内容几乎称不上
2011-02-15 22:44:00 687
原创 七.redis 持久化
redis是一个支持持久化的内存数据库,也就是说redis需要经常将内存中的数据同步到磁盘来保证持久化。redis支持两种持久化方式,一种是 Snapshotting(快照)也是默认方式,另一种是Append-only file(缩写aof)的方式。下面分别介绍 Snapshotting 快照是默认的持久化方式。这种方式是就是将内存中数据以快照的方式写入到二进制文件中,默认的文件名为dump.rdb。可以通过配置设置自动做快照持久 化的方式。我们可以配置redis在n
2011-02-15 22:39:00 812
原创 八.redis 主从复制
redis主从复制配置和使用都非常简单。通过主从复制可以允许多个slave server拥有和master server相同的数据库副本。下面是关于redis主从复制的一些特点 1.master可以有多个slave 2.除了多个slave连到相同的master外,slave也可以连接其他slave形成图状结构 3.主从复制不会阻塞master。也就是说当一个或多个slave与master进行初次同步数据时,master可以继续处理client发来的请求。相反slave在初次
2011-02-15 22:39:00 652
原创 九.redis学习笔记之虚拟内存
首先说明下redis的虚拟内存与os的虚拟内存不是一码事,但是思路和目的都是相同的。就是暂时把不经常访问的数据从内存交换到磁盘中,从而腾出宝贵的 内存空间用于其他需要访问的数据。尤其是对于redis这样的内存数据库,内存总是不够用的。除了可以将数据分割到多个redis server外。另外的能够提高数据库容量的办法就是使用vm把那些不经常访问的数据交换的磁盘上。如果我们的存储的数据总是有少部分数据被经常访问,大 部分数据很少被访问,对于网站来说确实总是只有少量用户经常活跃。当少量数据被经常访
2011-02-15 22:39:00 752
原创 六.redis 发布订阅
发布订阅(pub/sub)是一种消息通信模式,主要的目的是解耦消息发布者和消息订阅者之间的耦合,这点和设计模式中的观察者模式比较相似。pub /sub不仅仅解决发布者和订阅者直接代码级别耦合也解决两者在物理部署上的耦合。redis作为一个pub/sub server,在订阅者和发布者之间起到了消息路由的功能。订阅者可以通过subscribe和psubscribe命令向redis server订阅自己感兴趣的消息类型,redis将消息类型称为通道(channel)。当发布者通过publish命令
2011-02-15 22:38:00 1211
原创 四.redis 事务
redis对事务的支持目前还比较简单。redis只能保证一个client发起的事务中的命令可以连续的执行,而中间不会插入其他client的命令。 由于redis是单线程来处理所有client的请求的所以做到这点是很容易的。一般情况下redis在接受到一个client发来的命令后会立即处理并 返回处理结果,但是当一个client在一个连接中发出multi命令有,这个连接会进入一个事务上下文,该连接后续的命令并不是立即执行,而是先放到一 个队列中。当从此连接受到exec命令后,redis会顺序的执行队列中的所有
2011-02-15 22:37:00 603
原创 五.redis pipeline
redis是一个cs模式的tcp server,使用和http类似的请求响应协议。一个client可以通过一个socket连接发起多个请求命令。每个请求命令发出后client通常 会阻塞并等待redis服务处理,redis处理完后请求命令后会将结果通过响应报文返回给client。基本的通信过程如下 Client: INCR XServer: 1Client: INCR XServer: 2Client: INCR XServer: 3Client: INCR XServer: 4基 本上
2011-02-15 22:37:00 990 1
原创 三.redis 排序
本篇文章介绍下redis排序命令.redis支持对list,set和sorted set元素的排序。排序命令是sort 完整的命令格式如下: SORT key [BY pattern] [LIMIT start count] [GET pattern] [ASC|DESC] [ALPHA] [STORE dstkey] 下面我们一一说明各种命令选项 (1)sort key 这个是最简单的情况,没有任何选项就是简单的对集合自身元素排序并返回排序结果.下面给个例子 re
2011-02-15 22:36:00 691
原创 一.redis 环境搭建
1.简介 redis是一个开源的key-value数据库。它又经常被认为是一个数据结构服务器。因为它的value不仅包括基本的string类型还有 list,set ,sorted set和hash类型。当然这些类型的元素也都是string类型。也就是说list,set这些集合类型也只能包含 string 类型。你可以在这些类型上做很多原子性的操作。比如对一个字符value追加字符串(APPEND命令)。加加或者减减一个数字字符串(INCR命令,当 然是按整数处理的).可以对l
2011-02-15 22:35:00 866
原创 二.redis 数据类型
本文介绍下redis支持的各种数据类型包括string,list ,set ,sorted set 和hash Technorati 标签: redis cache list 存储 1. keys redis本质上一个key-value db,所以我们首先来看看他的key.首先key也是字符串类型,但是key中不能包括边界字符 由于key不是binary safe的字符串,所以像"my key"和"mykey/n"这样包含空格和换行的key是不允许的 顺便说一下在redis内部并
2011-02-15 22:35:00 1654
原创 redis sort操作2
redis相传性能不错,不仅结合了key value数据库的优点,又有满足一些必要的关系型数据库的功能。 我们有个产品最近想为每个用户出排行榜,APP,SNS产品常见功能,每个用户与好友做排行榜排序......无聊又必备功能。 还没测试redis性能。但功能是可以实现的。还挺不错的....稍后会测试测试性能,和PHP的API 要是不错....那可真是神物啊。 做个示例: [root@xpdmediainc04 redis-1.02]# ./redis-cli sadd tom
2011-02-15 11:28:00 1781
原创 redis 排序
本篇文章介绍下redis排序命令.redis支持对list,set和sorted set元素的排序。排序命令是sort 完整的命令格式如下: SORT key [BY pattern] [LIMIT start count] [GET pattern] [ASC|DESC] [ALPHA] [STORE dstkey] 下面我们一一说明各种命令选项 (1)sort key 这个是最简单的情况,没有任何选项就是简单的对集合自身元素排序并返回排序结果.下面给个例子 redis>
2011-02-15 11:04:00 4424 1
原创 Java序列化机制和原理
Java序列化算法透析 Serialization(序列化)是一种将对象以一连串的字节描述的过程;反序列化deserialization是一种将这些字节重建成一个对象的过程。Java序列化API提供一种处理对象序列化的标准机制。在这里你能学到如何序列化一个对象,什么时候需要序列化以及Java序列化的算法,我们用一个实例来示范序列化以后的字节是如何描述一个对象的信息的。 序列化的必要性 Java中,一切都是对象,在分布式环境中经常需要将Object从这一端网络或设备传递到另一端。 这就需
2011-01-07 21:02:00 862
原创 WeakReference &&reference quene &&GC
在了解WeakReference之前,先给出一段简单的代码: public class WeakReferenceTest {public static void main(String[] args) throws Exception {Object o = new Object();// 默认的构造函数,会使用ReferenceQueue.NULL 作为queueWeakReference wr = new WeakReference(o);System.out.println(wr.get()
2011-01-05 17:03:00 713
原创 WeakHashMap是如何清除不用的key的
今天在内部邮件群里看到了一封关于ReferenceQuene的讨论,之前对这个东东也有一定的了解,趁此机会总结一下,以供后人参阅. 先把问题说清楚: WeakHashMap是主要通过expungeStaleEntries这个函数的来实现移除其内部不用的条目从而达到的自动释放内存的目的的.基本上只要对WeakHashMap的内容进行访问就会调用这个函数,从而达到清除其内部不在为外部引用的条目。但是如果预先生成了WeakHashMap,而在GC以前又不曾访问该WeakHashMap,那不是就不能释放内存了
2011-01-05 17:00:00 999
原创 理解java reference
Java世界泰山北斗级大作《Thinking In Java》切入Java就提出“Everything is Object”。在Java这个充满Object的世界中,reference是一切谜题的根源,所有的故事都是从这里开始的。 Reference是什么? 如果你和我一样在进入Java世界之前曾经浪迹于C/C++世界,就一定不会对指针陌生。谈到指针,往日种种不堪回首的经历一下子涌上心头,这里不是抱怨的地方,让我们暂时忘记指针的痛苦,回忆一下最初接触指针的甜蜜吧!还记得你看过的教
2011-01-05 16:36:00 551
原创 Java reference的种类及使用场景
Java 中一共有 4 种类型的引用 :StrongReference、 SoftReference、 WeakReference 以及PhantomReference (传说中的幽灵引用)这 4 种类型的引用与 GC 有着密切的关系, 让我们逐一来看它们的定义和使用场景 :1. StrongReference StrongReference 是 Java 的默认引用实现, 它会尽可能长时间的存活于 JVM 内,当没有任何对象指向它时 GC 执行后将会被回收2.WeakRefe
2011-01-05 16:29:00 677
原创 velocity1.6.1 并发问题
vevocity在做渲染时会调用 org.apache.velocity.util.introspection.ClassMap$MethodCache.get方法 该方法完整代码(velocity1.6.1版本)如下 private final Map cache = new HashMap();public Method get(final String name, final Object [] params) throws MethodMap.Ambiguous
2010-12-17 13:24:00 888
原创 localCache与集中式cache
使用memcache缓存数据,减少对数据库的直接访问,提高网站性能已经成了各大网站最基本的技术.如何更好的提高memcache缓存的利用率及命中次数会在后面的blog中单独介绍,本文主要探讨为何及如何使用本地缓存(java localcache)提高网站性能. localcache与memcache性能比较 先来个本地缓存与memcache缓存的性能比较,有个直观上的概念 Cache 请求方式
2010-11-22 14:56:00 1338
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人