This module provide and usefull helper to use the official Node_redis library.

See official documentation [here](https://github.com/NodeRedis/node_redis).

## Compatibility

The minimum supported version of Node.js is v14.

## How to use it

To use the library you just need to follow the following steps
Install the library with npm

```js
npm install @condor-labs/redis
```

Import the library:

```js
const redis = require('@condor-labs/redis')(settings);
```

### `settings` object properties
| Property  | Default   | Description |
|-----------|-----------|-------------|
| socket.host *(String)*      | 127.0.0.1 | IP address of the Redis server |
| socket.port *(Number)*     | 6379 | Port of the Redis server |
| password *(String)*     | null | If set, client will run Redis auth command on connect.|
| clientName *(String)*     | hostname | If set, client will have an alias name in the connection.|

## What's new?

- new parameter to set the conection name by default it will set the hostname of the machine as name
- set name of connection for every client
- `getClient(false,true)` turn on the feature to remove clients with the same name in the same ip domain
- new paramether for get client `getClient: async (forceReconnect = false, verifyUniqueConnection = false)`
- Update all libraries to last version

```
"chai": "4.3.6",
"jest": "29.0.1",
"sinon": "14.0.0"
"redis": "~4.3.0"
```

### Breaking changes

- Connection setting object had a new schema
- `getClient()` receive an object of option like `(forceReconnect,verifyUniqueConnection)`


### Features

- All commands are returns a promise by default
- New parameter to set the conection name by default it will set the hostname of the machine as name
- `getClient({verifyUniqueConnection:true})` feature to remove clients with the same name

## Examples

**constants.js**
```js
module.exports = {
    settings:{
    socket: {
      port: 1234,
      host: 'redis-99999.c11.us-xxx-##.redis.com',
    },
    clientName: 'connection_alias',
    password: '****'
  },
    keyName: 'test:condorlabs-npm-helpers:counter'
};
```
**index.js**
```js
const {
    settings,
    keyName
} = require('./constants');

try {
    const redis = require('@condor-labs/redis')(settings);
    (async () => {
        // get client
        let client = await redis.getClient();
        // prepare and execute batch in redis
      
        const data = await client.get(keyName);
        // validate response
        console.log(data);
        // close app
        process.exit(1);
    })();
} catch (error) {
    console.error(error)
}
```

## How to Publish

### Increasing package version
You will need to update the `package.json` file placed in the root folder.

identify the property `version` and increase the right number in plus one.

### Login in NPM by console.

```sh
 npm login
 [Enter username]
 [Enter password]
 [Enter email]
```
If all is ok the console will show you something like this : `Logged in as USERNAME on https://registry.npmjs.org/.`

### Uploading a new version
```sh
 npm publish --access public
```

Ref: [https://docs.npmjs.com/getting-started/publishing-npm-packages](https://docs.npmjs.com/getting-started/publishing-npm-packages)

```
Note: you will need to have a NPM account, if you don't have one create one here: https://www.npmjs.com/signup
```

## Contributors

The original author and current lead maintainer of this module is the [@condor-labs development team](https://condorlabs.io/team).

**More about Condorlabs [Here](https://condorlabs.io/about).**

## License

[MIT](LICENSE)

