问题概述今天第一次在nginx+lua架构下,写了个需要操作Redis的后台接口,该接口的功能主要是接受客户端的json格式的post请求,实现对保存在redis中的任务插入、删除、查询等。虽然nginx,lua等都是刚接触,但这几个接口还是顺风顺水的坐下来了,不能忘了感谢春哥章亦春。在Redis中记录的任务其实很简单,每插入一个任务,就在redis中增加一个HASH结构,每次查询返回该SET的各个Field和对应的Value值,例如md5,filesize等。由于任务类型的不同,有的Field可能在该任务中不存在,此时在以json格式将查询结果返回时不应显示该Field。以md5域为例,在对当前任务以md5域执行hget后,应该对返回结果做一个判断,如果该HASH结构并没有设置md5这个域,则跳过,继续执行后
Redis的通讯协议可以说大集汇了……消息头标识,消息行还有就行里可能还有个数据块大小描述.首先Redis是以行来划分,每行以rn行结束。每一行都有一个消息头,消息头共分为5种分别如下:(+) 表示一个正确的状态信息,具体信息是当前行+后面的字符。(-) 表示一个错误信息,具体信息是当前行-后面的字符。(*) 表示消息体总共有多少行,不包括当前行,*后面是具体的行数。($) 表示下一行数据长度,不包括换行符长度rn,$后面则是对应的长度的数据。(:) 表示返回一个数值,:后面是相应的数字节符。以上就是Redis协议的基础组成部分,下面来分析几个指令了解一下具体相关指令和返回情况.SETC:1SET HENRY HENRYFAN以上命令是设置HENRY 的值为HENRYFAN.在Redis
五竹,20110418Redis: A persistent key-value database with built-in net interface written in ANSI-C for Posix systems1 Redis 内存存储结构本文是基于 Redis-v2.2.4 版本进行分析.1.1 Redis 内存存储总体结构Redis 是支持多key-value数据库(表)的,并用 RedisDb 来表示一个key-value数据库(表). redisServer 中有一个 redisDb *db; 成员变量, RedisServer 在初始化时,会根据配置文件的 db 数量来创建一个 redisDb 数组. 客户端在连接后,通过 SELECT 指令来选择一个 reidsDb,如
先说我自己用的情况:最先用的memcache ,用于键值对关系的服务器端缓存,用于存储一些常用的不是很大,但需要快速反应的数据然后,在另一个地方,要用到redis,然后就去研究了下redis. 一看,显示自己安装了php扩展,因为有服务器上的redis服务端,自己本地就没有安装,其实用法和memcache基本一样,可能就是几个参数有所不同。当然 它们缓存的效果也不一样,具体的哪里不一样,一下就是一些资料,和自己的总结1、 Redis和Memcache都是将数据存放在内存中,都是内存数据库。不过memcache还可用于缓存其他东西,例如图片、视频等等。2、 数据类型--Memcache在添加数据时就要指定数据的字节长度,例如: set key3 0 0 8 lxsymcto STORED而redis不需要,
# Redis 配置文件# 当配置中需要配置内存大小时,可以使用 1k, 5GB, 4M 等类似的格式,其转换方式如下(不区分大小写)## 1k => 1000 bytes# 1kb => 1024 bytes# 1m => 1000000 bytes# 1mb => 1024*1024 bytes# 1g => 1000000000 bytes# 1gb => 1024*1024*1024 bytes## 内存配置大小写是一样的.比如 1gb 1Gb 1GB 1gB# daemonize no 默认情况下,redis不是在后台运行的,如果需要在后台运行,把该项的值更改为yesdaemonize yes# 当redis在后台运行的时候,Redis默认会把pid文件放在/var
发布时间:
2013-05-27 |
类别:
技术文章 | 阅读:252073 | 评论:0 |
标签:
redis
安装1. redis-py a. 使用easy_install[plain] view plaincopyprint?sudo easy_install redis b. 源码安装[plain] view plaincopyprint?git clone https://github.com/andymccurdy/redis-py.git cd redis-py python setup.py install 2. Parse
Redis与Memcached的比较网络IO模型Memcached是多线程,非阻塞IO复用的网络模型,分为监听主线程和worker子线程,监听线程监听网络连接,接受请求后,将连接描述字pipe 传递给worker线程,进行读写IO, 网络层使用libevent封装的事件库,多线程模型可以发挥多核作用,但是引入了cache coherency和锁的问题,比如,Memcached最常用的stats 命令,实际Memcached所有操作都要对这个全局变量加锁,进行计数等工作,带来了性能损耗。(Memcached网络IO模型)Redis使用单线程的IO复用模型,自己封装了一个简单的AeEvent事件处理框架,主要实现了epoll、kqueue和select,对于单纯只有IO操作来说,单线程可以将速度优势发挥到最大,但是
译者注:原文位于Redis官网http://redis.io/topics/twitter-cloneRedis是NoSQL数据库中一个知名数据库,在新浪微博中亦有部署,适合固定数据量的热数据的访问。作为入门,这是一篇很好的教材,简单描述了如何使用KV数据库进行数据库的设计。新的项目www.xiayucha.com亦采用Redis + MySQL进行开发,考虑Redis文档比较少,故翻译了此文。其他参考资料:Redis命令参考中文版(Redis Command Reference)Try Redis 我会在此文中描述如何使用PHP以及仅使用Redis来设计实现一个简单的Twitter克隆。很多编程社区常认为KV储存是一个特别的数据库,在web应用中不能替代关系数据库。本文尝试证明这恰恰相反
原代码#!/usr/bin/php -q/** * This is a demo * @see docchatserver *///ini_set('default_socket_timeout', -1);$redis = new Redis();$redis->pconnect('127.0.0.1',6379);$redis->select(15); function channel($redis, $channel, $msg) { echo 'from-' . $channel . ':' . $msg . "n";} $redis->subscribe(array('
发布时间:
2012-03-29 |
类别:
技术文章 | 阅读:926262 | 评论:2 |
标签:
redis
最近忙着用Redis实现一个消息通知系统,今天大概总结了一下技术细节,其中演示代码如果没有特殊说明,使用的都是PhpRedis扩展来实现的。内存比如要推送一条全局消息,如果真的给所有用户都推送一遍的话,那么会占用很大的内存,实际上不管粘性有多高的产品,活跃用户同全部用户比起来,都会小很多,所以如果只处理登录用户的话,那么至少在内存消耗上是相当划算的,至于未登录用户,可以推迟到用户下次登录时再处理,如果用户一直不登录,就一了百了了。队列当大量用户同时登录的时候,如果全部都即时处理,那么很容易就崩溃了,此时可以使用一个队列来保存待处理的登录用户,如此一来顶多是反应慢点,但不会崩溃。Redis的LIST数据类型可以很自然的创建一个队列,代码如下:connect('/tmp/redis.sock');
$redi