Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/panates/redisess
Powerful redis session manager for NodeJS
https://github.com/panates/redisess
javascript nodejs redis session session-manager typescript
Last synced: about 2 months ago
JSON representation
Powerful redis session manager for NodeJS
- Host: GitHub
- URL: https://github.com/panates/redisess
- Owner: panates
- License: mit
- Created: 2018-12-11T13:03:53.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2024-08-20T18:21:05.000Z (4 months ago)
- Last Synced: 2024-10-30T12:05:45.758Z (about 2 months ago)
- Topics: javascript, nodejs, redis, session, session-manager, typescript
- Language: TypeScript
- Homepage:
- Size: 1.54 MB
- Stars: 8
- Watchers: 4
- Forks: 2
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Support: support/package.cjs.json
Awesome Lists containing this project
README
[![NPM Version][npm-image]][npm-url]
[![NPM Downloads][downloads-image]][downloads-url]
[![Build Status][travis-image]][travis-url]
[![Test Coverage][coveralls-image]][coveralls-url][![Dependencies][dependencies-image]][dependencies-url]
[![DevDependencies][devdependencies-image]][devdependencies-url]
[![Package Quality][quality-image]][quality-url]## Redisess
High performant advanced Redis session manager for NodeJS.
## Installation
Redisess requires "ioredis" library to work.
It has been tested for [redis](https://www.npmjs.com/package/redis),
[node-redis](https://www.npmjs.com/package/node-redis) and
[ioredis](https://www.npmjs.com/package/ioredis) client libraries.```bash
$ npm install ioredis redisess --save
```## Basic Usage
The example blow show how can you use Redisess in a simple express applicaiton.
```ts
import express from 'express';
import Redis from 'ioredis';
import {SessionManager} from 'redisess';const client = new Redis();
const manager = new SessionManager(client, {
namespace: 'myapp',
additionalFields: ['groupId'],
ttl: 120 // Default Time-To-Live value in seconds: 120 seconds
});const app = express();
app.get('/login', async function (req, res) {
const userName = req.query.userName;
const pass = req.query.password;
//...Login application logic here
const session = await sm.create(userName, {
ttl: 240, // You can overwrite ttl value per session
groupId: 111 // You can store additional values
});
res.send('Your session id is '+session.sessionId);
});app.get('/killSession/:sessionid', async function (req, res) {
await sm.kill(req.params.sessionid);
res.send('Session ' + req.params.sessionid + ' is closed');
});app.get('/killUser/:userId', async function (req, res) {
await sm.killUser(req.params.userId);
res.send('All sessions for user "' + req.params.userId +'" are closed.');
})
app.listen(3000);```
---
## SessionManager### prototype.count()
Returns the number of sessions within the last n seconds. Get all session count if n is not defined or zero
`count(secs: number = 0): Promise`
##### Parameters
- secs: The elapsed time since the last activity of the session. Returns total count of sessions If not defined or zero
- *Return value :* Returns the number of sessions.---
### prototype.countForUser()Retrieves session count of single user which were active within the last n seconds.
`countForUser(userId: string, secs: number = 0): Promise`
##### Parameters
- userId: Id of the user
- secs: The elapsed time since the last activity of the session. Returns total count of sessions If not defined or zero
- *Return value :* Returns the number of sessions.---
### prototype.create()Creates a new session for the user
`create(userId: string, props?: { ttl?: number, [index: string]: any }): Promise`
##### Parameters
- userId: Id of the user
- props: Additional properties
- ttl: Time-To-Live value in seconds
- *...: Additional fields
- *Return value :* Returns new created session.---
#### prototype.get()Retrieves session by sessionId
`get(sessionId: string, noUpdate: boolean = false): Promise`
##### Parameters
- sessionId: Id of the session
- noUpdate: Update state of the session
- *Return value :* Returns new created session.---
#### prototype.getAllSessions()Retrieves all session ids which were active within the last n seconds.
`getAllSessions(secs: number): Promise`
##### Parameters
- secs: The elapsed time since the last activity of the session. Returns total count of sessions If not defined or zero
- *Return value :* Returns the string array of all sessions.---
#### prototype.getAllUsers()Retrieves all user ids which were active within the last n seconds.
`getAllUsers(secs: number): Promise`
##### Parameters
- secs: The elapsed time since the last activity of the session. Returns total count of sessions If not defined or zero
- *Return value :* Returns the string array of all users.---
#### prototype.getUserSessions()Retrieves session ids of single user which were active within the last n seconds.
`getUserSessions(userId: string, n: number = 0): Promise`
##### Parameters
- userId: Id of the user
- n: The elapsed time since the last activity of the session.
- *Return value :* Returns the string array of all sessions for an user.---
#### prototype.getOldestUserSession()Retrieves oldest session of user
`getOldestUserSession(userId: string, noUpdate: boolean = false): Promise`
##### Parameters
- userId: Id of the user
- noUpdate: Update state of the session
- *Return value :* Returns new created session.---
#### prototype.exists()Returns true if sessionId exists, false otherwise
`exists(sessionId: string): Promise`
##### Parameters
- sessionId: Id of the session
- *Return value :* Returns Boolean.---
#### prototype.kill()Kills single session
`kill(sessionId: string): Promise`
##### Parameters
- sessionId: Id of the session
- *Return value :* No return value.---
#### prototype.killUser()Kills all sessions of user
`killUser(userId: string): Promise`
##### Parameters
- userId: Id of the user
- *Return value :* No return value.---
#### prototype.killAll()Kills all sessions for application
`killAll(): Promise`
##### Parameters
- No parameter value
- *Return value :* No return value.---
#### prototype.now()Retrieves present time.
`now(): Promise`
##### Parameters
- No parameter value
- *Return value :* Returns number.---
#### prototype.quit()Stops wipe timer
`quit(): void`
##### Parameters
- No parameter value
- *Return value :* No return value.---
## Session---
#### prototype.sessionIdReturns session id value
`sessionId(): string`
---
#### prototype.userIdReturns user id value
`userId(): string`
---
#### prototype.ttlReturns Time-To-Live value
`ttl(): number`
---
#### prototype.lastAccessReturns the time (unix) of last access
`lastAccess(): number`
---
#### prototype.expiresReturns the time (unix) that session be expired.
`expires(): number`
---
#### prototype.expiresInReturns duration that session be expired.
`expiresIn(): number`
---
#### prototype.validReturns validation of session and user with last access control.
`valid(): boolean`
---
#### prototype.idleReturns idle duration in seconds.
`idle(): number`
---
#### prototype.[additionalField]Returns any additional field value
---
#### prototype.read()Reads session info from redis server
`read(): Promise`
---
#### prototype.get()Retrieves user data from session.
`get(key): Promise`
##### Parameters
- key: string | Array | Object
- *Return value :* No return value.---
#### prototype.set()Stores user data to session
`set(key, value): Promise`
##### Parameters
- key: string | Object
- value: *
- *Return value :* Length of values.---
#### prototype.kill()Kills the session
`kill(): Promise`
---
#### prototype.write()Write session to redis server.
`write(): Promise`
---
## Node Compatibility
- node >= 8.x
## Change logTo see changelog click [here](https://github.com/panates/redisess/commits/master)
### License
Available under [MIT](LICENSE) license.[npm-image]: https://img.shields.io/npm/v/redisess.svg
[npm-url]: https://npmjs.org/package/redisess
[travis-image]: https://img.shields.io/travis/panates/redisess/master.svg
[travis-url]: https://travis-ci.org/panates/redisess
[coveralls-image]: https://img.shields.io/coveralls/panates/redisess/master.svg
[coveralls-url]: https://coveralls.io/r/panates/redisess
[downloads-image]: https://img.shields.io/npm/dm/redisess.svg
[downloads-url]: https://npmjs.org/package/redisess
[dependencies-image]: https://david-dm.org/panates/redisess/status.svg
[dependencies-url]:https://david-dm.org/panates/redisess
[devdependencies-image]: https://david-dm.org/panates/redisess/dev-status.svg
[devdependencies-url]:https://david-dm.org/panates/redisess?type=dev
[quality-image]: http://npm.packagequality.com/shield/redisess.png
[quality-url]: http://packagequality.com/#?package=redisess