摘要: 首先说明下redis的虚拟内存与操作系统的虚拟内存不是一码事,但是思路和目的都是相同的。就是暂时把不经常访问的数据从内存交换到磁盘中,从而腾出宝贵的内存空间用于其他需要访问的数据。尤其是对于redis这样的内存数据库,内存总是不够用的。 除了可以将数据分割到多个redis server外。另外的能够提高数据库容量的办法就是使用虚拟内存把那些不经常访问的数据交换的磁盘上。如果我们的存储的数据总是有少部分数据被经常访问,大部分数据很少被访问,对于网站来说确实总是只有少量用户经常活跃。当少量数据被经常访问时,使用虚拟内存不但能提高单台redis server数据库的容量,而且也不会对性能造成太多影. 阅读全文
posted @ 2013-05-14 09:22 Efeng 阅读(352) 评论(0) 推荐(0) 编辑
摘要: 在之前的文章中,介绍过Redis数据库高级实用特性中的发布及订阅消息,今天为大家介绍Redis的另一高级实用特性Pipeline批量发送请求。 redis是一个cs模式的tcp server,使用和http类似的请求响应协议。一个client可以通过一个socket连接发起多个请求命令。每个请求命令发出后client通常会阻塞并等待redis服务处理,redis处理完后请求命令后会将结果通过响应报文返回给client。基本的通信过程如下: Client: INCR X Server: 1 Client: INCR X Server: 2 Client: INCR X Serv... 阅读全文
posted @ 2013-05-14 09:15 Efeng 阅读(382) 评论(0) 推荐(0) 编辑
摘要: Redis对事务的支持目前还比较简单。redis只能保证一个client发起的事务中的命令可以连续的执行,而中间不会插入其他client的命令。 由于redis是单线程来处理所有client的请求的所以做到这点是很容易的。一般情况下redis在接受到一个client发来的命令后会立即处理并 返回处理结果,但是当一个client在一个连接中发出multi命令有,这个连接会进入一个事务上下文,该连接后续的命令并不是立即执行,而是先放到一个队列中。当从此连接受到exec命令后,redis会顺序的执行队列中的所有命令。并将所有命令的运行结果打包到一起返回给client.然后此连接就 结束事务上下文。1 阅读全文
posted @ 2013-05-14 09:13 Efeng 阅读(318) 评论(0) 推荐(0) 编辑
摘要: 安全性设置客户端连接后进行任何其他指定前需要使用的密码。警告:因为redis速度相当快,所以在一台比较好的服务器下,一个外部的用户可以在一秒钟进行150K次的密码尝试,这意味着你需要指定非常非常强大的密码来防止暴力破解。# requirepass foobared requirepass beijing 下面我们做一个实验,说明redis的安全性是如何实现的。我们设置了连接的口令是beijing那么们启动一个客户端试一下:[root@localhostredis-2.2.12]#src/redis-cli redis127.0.0.1:6379>keys* (error)ERRopera 阅读全文
posted @ 2013-05-14 09:12 Efeng 阅读(293) 评论(0) 推荐(0) 编辑
摘要: 在上篇文章中,我们介绍了Redis的高级实用特性中的安全性和主从复制,以及事务控制,在这篇文章中将继续为大家介绍Redis高级实用特性中的持久化机制。 redis是一个支持持久化的内存数据库,也就是说redis需要经常将内存中的数据同步到磁盘来保证持久化。redis支持两种持久化方式,一种是Snapshotting(快照)也是默认方式,另一种是Append-only file(缩写aof)的方式。下面分别介绍: Snapshotting: 快照是默认的持久化方式。这种方式是就是将内存中数据以快照的方式写入到二进制文件中,默认的文件名为dump.rdb。可以通过配置设置自动做快照持久化的方... 阅读全文
posted @ 2013-05-14 09:10 Efeng 阅读(230) 评论(0) 推荐(0) 编辑
摘要: 在之前的文章中,介绍过Redis数据库高级实用特性中的持久化机制,今天为大家介绍Redis的另一高级实用特性——发布及订阅消息。 发布订阅(pub/sub)是一种消息通信模式,主要的目的是解耦消息发布者和消息订阅者之间的耦合,这点和设计模式中的观察者模式比较相似。pub/sub不仅仅解决发布者和订阅者直接代码级别耦合也解决两者在物理部署上的耦合。redis作为一个pub/sub的server,在订阅者和发布者之间起到了消息路由的功能。订阅者可以通过subscribe和psubscribe命令向redis server订阅自己感兴趣的消息类型,redis将消息类型称为通道(channel)。当. 阅读全文
posted @ 2013-05-14 09:09 Efeng 阅读(250) 评论(0) 推荐(0) 编辑
摘要: 常用 http status常见HTTP状态码200 OK301 Moved Permanently302 Found304 Not Modified307 Temporary Redirect400 Bad Request401 Unauthorized403 Forbidden404 Not Found410 Gone500 Internal Server Error501 Not Implemented100Continue 初始的请求已经接受,客户应当继续发送请求的其余部分101SwitchingProtocols 服务器将遵从客户的请求转换到另外一种协议200OK 一切正常,对GET 阅读全文
posted @ 2013-04-16 17:59 Efeng 阅读(123) 评论(0) 推荐(0) 编辑
摘要: 正如精良的设计一样,优秀的导航也大象无形。不管是浏览好友信息,还是租赁汽车,完美的导航设计能让用户根据直觉使用应用程序,也能让用户非常容易地完成所有任务。一款应用的导航可以被设计成各种样式,但我想着重介绍6种主要的导航模式,也就是主菜单的导航模式(见图1-1)。图1-1 主要导航模式跳板式跳板式导航对操作系统并没有特殊要求,在各种设备上都有良好表现。它有时也被称为“快速启动板”(Launchpad)。跳板式导航的特征是,登录界面中的菜单选项就是进入各个应用的起点。Facebook 应用沿用了iOS 主界面上的跳板式设计,其他应用随之跟风(见图1-2 至图1-4)。图1-2 Facebook 的 阅读全文
posted @ 2013-02-28 10:43 Efeng 阅读(256) 评论(0) 推荐(0) 编辑
摘要: 在实际的开发中,编写出易维护和易接受变化的代码并非易事,想要实现可能更加困难重重:源码难于理解、依赖关系指向不明、耦合也很令人头疼。难道就真的就没有办法了吗?本文中我们一起探讨几个技术原则和一些编码理念,让你的代码跟着需求走,而且易维护易拓展。介绍些面向对象方法面向对象编程(OOP)是一种很受欢迎的编程思想,它保证了代码的组织性和重用性。软件公司采用OOP思想编程已经好多年了,如今仍然在项目开发中使用这一思想。OOP拥有一系列非常好的编程原则,如果使用恰当,它会让你的代码更好、更整洁和更易维护。1.内聚力这里的内聚力是指拥有一些共同的特征的东西而逐渐凝聚到一起,而不能在一起的东西则会被移除出去 阅读全文
posted @ 2013-02-28 10:25 Efeng 阅读(222) 评论(0) 推荐(0) 编辑
摘要: C# 从1.x 发展到目前的 4.5,委托的写法真是越来越简单精悍。如果您对这些委托的写法不是很清晰,本文可以帮助到您。委托是一种安全封装方法的类型,可以将方法作为方法的参数。委派方法的参数个数、顺序、类型及方法返回值类型必须跟定义的委托方法一样,但参数名称可以不同。1、C# 定义一个完整委托:delegate string SayMessage(string msg);static string SayHello(string Name){ return string.Format("Hello {0}", Name);}static void Main(string[] 阅读全文
posted @ 2013-02-28 09:23 Efeng 阅读(191) 评论(0) 推荐(0) 编辑