feat: 扩展Redis工具函数功能

- 添加`redisDeleteKey`函数,用于删除指定的Redis key
- 添加`redisGetAllKeys`函数,用于获取所有Redis keys
- 添加`redisExpireKey`函数,用于设置Redis key的过期时间
- 添加`redisTTLKey`函数,用于获取Redis key的剩余生存时间
- 优化注释和示例代码,提高代码的可读性和易用性
This commit is contained in:
zhiyu1998 2024-09-11 13:42:15 +08:00
parent 1c064271ea
commit 22274d805c

View File

@ -2,6 +2,9 @@
* 判断某个key是否存在
* @param key
* @returns {Promise<boolean>}
* @example
* const exists = await redisExistKey('myKey');
* console.log(exists); // true or false
*/
export async function redisExistKey(key) {
return redis.exists(key);
@ -11,6 +14,9 @@ export async function redisExistKey(key) {
* 获取某个key的值
* @param key
* @returns {Promise<Object>}
* @example
* const value = await redisGetKey('myKey');
* console.log(value); // { ... }
*/
export async function redisGetKey(key) {
return JSON.parse(await redis.get(key));
@ -21,6 +27,8 @@ export async function redisGetKey(key) {
* @param key
* @param value
* @returns {Promise<*>}
* @example
* await redisSetKey('myKey', { foo: 'bar' });
*/
export async function redisSetKey(key, value = {}) {
return redis.set(
@ -33,6 +41,9 @@ export async function redisSetKey(key, value = {}) {
* 判断是否存在这个key然后再取值如果没有就返回null
* @param key
* @returns {Promise<Object|Array>}
* @example
* const value = await redisExistAndGetKey('myKey');
* console.log(value); // { ... } or null
*/
export async function redisExistAndGetKey(key) {
if (await redisExistKey(key)) {
@ -46,11 +57,13 @@ export async function redisExistAndGetKey(key) {
* @param key
* @param obj
* @returns {Promise<void>}
* @example
* await redisExistAndInsertObject('myKey', { newKey: 'newValue' });
*/
export async function redisExistAndInsertObject(key, obj) {
let objs = await redisExistAndGetKey(key);
if (objs) {
objs = {...objs, ...obj};
objs = { ...objs, ...obj };
await redisSetKey(key, objs);
} else {
await redisSetKey(key, obj);
@ -63,6 +76,8 @@ export async function redisExistAndInsertObject(key, obj) {
* @param updateKey
* @param updateObj
* @returns {Promise<void>}
* @example
* await redisExistAndUpdateObject('myKey', 'updateKey', { foo: 'bar' });
*/
export async function redisExistAndUpdateObject(key, updateKey, updateObj) {
let objs = await redisExistAndGetKey(key);
@ -70,4 +85,52 @@ export async function redisExistAndUpdateObject(key, updateKey, updateObj) {
objs[updateKey] = updateObj;
await redisSetKey(key, objs);
}
}
/**
* 删除某个key
* @param key
* @returns {Promise<number>}
* @example
* const result = await redisDeleteKey('myKey');
* console.log(result); // 1 if key was deleted, 0 if key did not exist
*/
export async function redisDeleteKey(key) {
return redis.del(key);
}
/**
* 获取所有的key
* @returns {Promise<Array<string>>}
* @example
* const keys = await redisGetAllKeys();
* console.log(keys); // ['key1', 'key2', ...]
*/
export async function redisGetAllKeys() {
return redis.keys('*');
}
/**
* 设置某个key的过期时间
* @param key
* @param seconds
* @returns {Promise<boolean>}
* @example
* const result = await redisExpireKey('myKey', 3600);
* console.log(result); // true if timeout was set, false if key does not exist
*/
export async function redisExpireKey(key, seconds) {
return redis.expire(key, seconds);
}
/**
* 获取某个key的剩余生存时间
* @param key
* @returns {Promise<number>}
* @example
* const ttl = await redisTTLKey('myKey');
* console.log(ttl); // time to live in seconds, -1 if key does not have timeout, -2 if key does not exist
*/
export async function redisTTLKey(key) {
return redis.ttl(key);
}