前段使用JQueryMobile进行展示。 实现了用户注册,登陆,列表基本功能 非常简洁。 如果想了解Redis存储,Express的处理可以提供一些基础的示范。

下载地址: https://github.com/guola/NodeJS_Express_Redis_User_Login

---------------------------------------------------------------------

URL转发服务  基于Express + Redis搭建


一直以来,国内主机要备案域名是个很令人蛋疼的域名,以前貌似NAE还可以绑定域名,这段时间也还是惨遭毒手了。

这几天闲着,写了个实现URL转发服务的程序,代码在这里:https://github.com/leizongmin/url-forwarding

URL转发可以选择301或者302状态码

界面很简单,等有空了在弄一下。

欢迎围观,欢迎拍砖。

-----------------------------------------------------------------------

基于高速缓存redis的session,可以在多个平台下共享

http://cnodejs.org/topic/51c2b71c73c638f3703db8b6

1.安装     npm install reids-sessions 2.方法/属性     1.每一个session都属于一个app     2.create :         一个session通过接受一个appName,唯一id被创建,返回值是一个token     3.get:         通过appName 与 token可以查询一个session     4.set:         在session上附加数据     5.kill:         通过appName + token可以杀掉一个session     6.killall:         通过appName可以杀掉所有session 3.附加方法     1.activity:         获取最近n秒内的活动session数量     2.soid:         获取一个id的所有session     3.killsoid:         杀死一个id的所有session     4.TODO:         获取n秒内被激活的所有session数组     5.Automatic         清除所有旧session 4.性能     测试环境描述:硬件:2011年的mac,部署在同一台机器的redis     测试命令:npm test     1.创建1000个session在170ms以内     2.获取这1000个session并校验在155ms内     3.移除这1000个session 18ms 5.在nodejs内使用

//初始化redis-sessionRedisSession=require("redis-session");var rs =newRedisSession({//*optional* Default:6379,redis prot
port:6379,//*optional* Defalut:127.0.0.1, redis host
host:127.0.0.1,//*optional* Default:"rs", 这个模块的redis key前缀namespace:"rs",//*optional* Default:600,擦除过期session的时间间隔,最少是10
wipe:600});//应用程序名var appName="myapp";//创建一个session
rs.create({
app:appName,//用户唯一id
id:"user01",//用户ip
ip:"192.168.22.58",//*optional* Default:7200 过期时间
ttl:3600},function(err,resp){// resp 应该是类似这样// {token: "r30kKwv3sA6ExrJ9OmLSm4Wo3nt9MQA1yG94wn6ByFbNrVWhcwAyOM7Zhfxqh8fe"}});//在session附加数据
rs.set({
app:appName,
token:"r30kKwv3sA6ExrJ9OmLSm4Wo3nt9MQA1yG94wn6ByFbNrVWhcwAyOM7Zhfxqh8fe",
d:{"msg1":"asd","msg2":"asd2"}},function(err,resp){/*
resp contains the session with the new values: {
"id":"user01",
"r": 1,
"w": 2,
"idle": 1,
"ttl": 3600,
"d":
{
"msg1":"asd",
"msg2":"asd2"
}
}
*/});//通过一个token获取session
rs.get({
app:appName,
token:"r30kKwv3sA6ExrJ9OmLSm4Wo3nt9MQA1yG94wn6ByFbNrVWhcwAyOM7Zhfxqh8fe",
funtion(err,resp){/*
resp contains the session: {
"id":"user01",
"r": 1, // The number of reads on this token
"w": 1, // The number of writes on this token
"idle": 21, // The idle time in seconds.
"ttl": 7200, // Timeout after 7200 idle time
"d":
{
"msg1":"asd",
"msg2":"asd2"
}
} */}});//设置/更新/删除
rs.set({
app:rsapp,
token:"r30kKwv3sA6ExrJ9OmLSm4Wo3nt9MQA1yG94wn6ByFbNrVWhcwAyOM7Zhfxqh8fe",
d:{//删除一个属性,设置为null即可"msg1":null,//设置一个新属性"msg3":123,}});//通过appName + token可以杀掉一个session
rs.kill({
app: rsapp,
token:"r30kKwv3sA6ExrJ9OmLSm4Wo3nt9MQA1yG94wn6ByFbNrVWhcwAyOM7Zhfxqh8fe"},function(err, resp){/*
resp contains the result: {kill: 1}
*/}});//获取活动session
rs.activity({
app: rsapp,//时间区间
dt:600},function(err, resp){/*
resp contains the activity: {activity: 12}
*/}});//获取一个用户的所有session
rs.soid({
app: rsapp,
id:"bulkuser_999"},function(err, resp){/*
resp contains the sessions: { sessions:
[
{
id: 'bulkuser_999',
r: 1,
w: 1,
ttl: 30,
idle: 0,
ip: '127.0.0.2'
},
{
id: 'bulkuser_999',
r: 1,
w: 1,
ttl: 7200,
idle: 0,
ip: '127.0.0.1'
}
]
}
*/});//杀死某用户的所有session
rs.killsoid({app: appName, id:'bulkuser_999'},function(err, resp){/*
resp contains the result: {kill: 2} // The amount of sessions that were killed
*/});//杀死一个app内的所有session
rs.killall({app: appName},function(err, resp){/*
resp contains the result: {kill: 12} // The amount of sessions that were killed
*/});

redis 应用的更多相关文章

  1. 使用redis构建可靠分布式锁

    关于分布式锁的概念,具体实现方式,直接参阅下面两个帖子,这里就不多介绍了. 分布式锁的多种实现方式 分布式锁总结 对于分布式锁的几种实现方式的优劣,这里再列举下 1. 数据库实现方式 优点:易理解 缺 ...

  2. Ignite性能测试以及对redis的对比

    测试方法 为了对Ignite做一个基本了解,做了一个性能测试,测试方法也比较简单主要是针对client模式,因为这种方法和使用redis的方式特别像.测试方法很简单主要是下面几点: 不作参数优化,默认 ...

  3. mac osx 安装redis扩展

    1 php -v查看php版本 2 brew search php|grep redis 搜索对应的redis   ps:如果没有brew 就根据http://brew.sh安装 3 brew ins ...

  4. Redis/HBase/Tair比较

    KV系统对比表 对比维度 Redis Redis Cluster Medis Hbase Tair 访问模式    支持Value大小 理论上不超过1GB(建议不超过1MB) 理论上可配置(默认配置1 ...

  5. Redis数据库

    Redis是k-v型数据库的典范,设计思想及数据结构实现都值得学习. 1.数据类型 value支持五种数据类型:1.字符串(strings)2.字符串列表(lists)3.字符串集合(sets)4.有 ...

  6. redis 学习笔记(2)

    redis-cluster 简介 redis-cluster是一个分布式.容错的redis实现,redis-cluster通过将各个单独的redis实例通过特定的协议连接到一起实现了分布式.集群化的目 ...

  7. redis 学习笔记(1)

    redis持久化 snapshot数据快照(rdb) 这是一种定时将redis内存中的数据写入磁盘文件的一种方案,这样保留这一时刻redis中的数据镜像,用于意外回滚.redis的snapshot的格 ...

  8. python+uwsgi导致redis无法长链接引起性能下降问题记录

    今天在部署python代码到预生产环境时,web站老是出现redis链接未初始化,无法连接到服务的提示,比对了一下开发环境与测试环境代码,完全一致,然后就是查看各种日志,排查了半天也没有查明是什么原因 ...

  9. nginx+iis+redis+Task.MainForm构建分布式架构 之 (redis存储分布式共享的session及共享session运作流程)

    本次要分享的是利用windows+nginx+iis+redis+Task.MainForm组建分布式架构,上一篇分享文章制作是在windows上使用的nginx,一般正式发布的时候是在linux来配 ...

  10. windows+nginx+iis+redis+Task.MainForm构建分布式架构 之 (nginx+iis构建服务集群)

    本次要分享的是利用windows+nginx+iis+redis+Task.MainForm组建分布式架构,由标题就能看出此内容不是一篇分享文章能说完的,所以我打算分几篇分享文章来讲解,一步一步实现分 ...

随机推荐

  1. Java API —— System类

    1.System类概述         System 类包含一些有用的类字段和方法.它不能被实例化.  2.成员方法         public static void gc():运行垃圾回收器   ...

  2. 【转载】git/github初级运用自如

    之前了解过github,并在上面看了一些项目的源代码,于是自己也在github上创建了账户,希望以后有机会也把自己的项目托管在上面去.但是前提你要先了解git/github,下面的内容是从我的好基友虫 ...

  3. mysql 插入汉字 异常 Incorrect string value: '\xE8\xA7\x84\xE5\x88\x99' for column 'name'

    今天使用mysql出现 Incorrect string value: '\xE8\xA7\x84\xE5\x88\x99' for column 'name' 异常 通过查找问题,发现是字段编码不支 ...

  4. hadoop2 环境的搭建(手动HA)

    1.手工切换ha的环境的搭建(比hadoop1多出来journalnode的配置) namenode:hadoop110和hadoop111 datanode:hadoop112.hadoop113. ...

  5. Java连接oracle数据库的OCI和THIN

    使用jdbc连接上oracle有两种方法: 1. 使用thin连接 由于thin驱动都是纯Java代码,并且使用TCP/IP技术通过java的Socket连接上Oracle数据库,所以thin驱动是与 ...

  6. C++ string类的学习

    string类对于处理字符串的一些应用非常的方便,我个人感觉,string和字符数组const char *很像,而且又比字符数组用起来方便的多. 注意其删除,取子串,插入等函数里面都有一个重载版本是 ...

  7. Parallel WebDriver executions using TestNG

    In this post, we will see how does one make use of TestNG to kick off parallel UI tests using WebDri ...

  8. sql语句记录

    清空日志 DUMP TRANSACTION 库名 WITH NO_LOG 截断事务日志 BACKUP LOG 数据库名 WITH NO_LOG 收缩数据库 DBCC SHRINKDATABASE(数据 ...

  9. UVa 1262 (第k字典序) Password

    题意: 给出两个6行5列的字母矩阵,一个密码满足:密码的第i个字母在两个字母矩阵的第i列均出现. 然后找出字典序为k的密码,如果不存在输出NO 分析: 我们先统计分别在每一列均在两个矩阵出现的字母,然 ...

  10. UVa 10375 (唯一分解定理) Choose and divide

    题意: 求组合数C(p, q) / C(r, s)结果保留5为小数. 分析: 先用筛法求出10000以内的质数,然后计算每个素数对应的指数,最后再根据指数计算答案. #include <cstd ...