这里的session机制很简单,用户登录之后,给用户生成一个session,包含用户的唯一编号ID,过期时间expires,以及用户的用户的sessionID。
创建了session之后,将session存放到redis数据库中,现在也只是测试了可以存放数据,并没有进行redis的进一步操作,今后将对redis进行集群操作,虽然小,但是一定要五脏俱全,会写两个类,一个专门用来写,针对主库,然后另一个专门用来读,针对从库。
这需要一个key值与redis从库的连接地址相关联,因为当存在多个key值时,读取是随机的,但是想想,又觉得没有必要,因为主库对从库是完全同步的,就是主库的数据会拷贝完整的一份到从库,先这样想着吧。
redis主要是用到了redis这个模块,模块很多的方法,现在只记录一下用到的:
/** * @description 存储hash结构的数据,同时设置数据的过期时间 * @param {string} 键的名称 * @param {json} 对应的值 * @returns {undefined} */ exports.hmset = function (key, json, expires) { try { console.log("--hmset function begin--"); client.hmset(key, json); if (expires) { client.expire(key,expires); } else { client.expire(key,60 * 30); } } catch (err) { console.log("lalalla:"+err); } }
存值的时候要注意参数的格式,注意redis的错误提示,可以很快的定位问题
还有就是注意异步的特点,比如这里,虽然页面的代码在redis操作之后,但是页面重跳转之后,redis的操作才执行了。
页面跳转之后设置cache保存sessionID,然后当页面跳转的时候,通过读取redis看看sessionID是否存在,来判断用户信息是否过期,没有的话,就更新一下redis的过期时间,因为redis中设置了过期时间,所以sessionID不存在的话,就跳转用户到登录页面
........
时间: 2024-10-23 06:50:49