Appearance
redis技术
📖 redis是什么?
redis是一种内存数据库,数据保存在内存中,读写速度非常快,常用于高频请求等场景。
- 比如用户信息、用户权限、等等。
安装:
shell
npm install redis📖 redis使用
js
const redis = require('redis');
const client = redis.createClient();
// 错误监听
client.on('error', (err) => {
console.log('Error ' + err);
});
// 连接并测试(排队)
async function connectTest() {
await client.connect(); // 连接到 Redis
await client.set('hello', 'world'); // 设置键值对
const value = await client.get('hello'); // 获取值
console.log('获取到的值:', value); // 输出: world
await client.quit(); // 断开连接
}
connectTest();📖 redis数据类型
- String(字符串)
- Hash(哈希)
- List(列表)
- Set(集合)
- ZSet(有序集合)
String(字符串)
js
await client.set('key', 'value'); // 设置键值对
const value = await client.get('key'); // 获取值
await client.del('key'); // 删除键
await client.set('age', '20', { EX: 60 }); // 60秒后过期
await client.incr('age'); // 自增
await client.decr('age'); // 自减
await client.incrBy('page:views', 10); // 自增10
await client.decrBy('page:views', 10); // 自减10Hash(哈希)用于存储对象,如用户信息。
js
// 设置单个哈希字段值
await client.hSet('username', 'name', 'value');
await client.hSet('username', 'email', 'john@example.com');
// 或者一次性设置多个
await client.hSet('username', {
name: 'Jane',
email: 'jane@example.com',
age: '25'
});
const userName = await client.hGet('user:1000', 'name'); // 获取单个字段值
const user = await client.hGetAll('user:1000'); // 获取所有字段值
await client.hDel('user:1000', 'name', 'email', 'age'); // 删除多个字段List(列表)用于存储有序的字符串列表。
js
// 从左边或右边推入元素
await client.lPush('tasks', 'task1'); // ['task1']
await client.rPush('tasks', 'task2'); // ['task1', 'task2']
await client.lPush('tasks', 'task0'); // ['task0', 'task1', 'task2']
const tasks = await client.lRange('tasks', 0, -1); // 获取所有元素
console.log(tasks); // ['task0', 'task1', 'task2']
const firstTask = await client.lIndex('tasks', 0);
console.log(firstTask); // 'task0'Set(集合)无序的、唯一的字符串集合,用于存储不重复的数据。
js
// CREATE - 添加成员
await client.sAdd('tags', 'javascript');
await client.sAdd('tags', 'nodejs');
await client.sAdd('tags', 'redis');
await client.sAdd('tags', 'nodejs'); // 这个不会被添加,因为重复了
// READ - 获取所有成员
const allTags = await client.sMembers('tags');
console.log(allTags); // ['javascript', 'nodejs', 'redis'] (顺序不确定)
// 检查成员是否存在
const exists = await client.sIsMember('tags', 'nodejs');
console.log(exists); // true
// DELETE - 移除成员
await client.sRem('tags', 'javascript');