介绍:
Redis是一个key value的数据库,基于内存、分布式、可选持久性的键值对(Key-Value)存储数据库。
https://www.runoob.com/redis/redis-tutorial.html
安装
macOS
基本使用
- 登录:
首先通过redis-server
命令开启一个Redis服务,然后通过redis-cli
登录到客户端 - 操作:
set a 111 // 设置a为111
get a // 获取a
KEYS * // 获取所有key
DEL a // 删除a
setex c 10 1 // 设置c为1,并且只存10秒钟,可以应用在session,过期处理
nodejs连接redis
官方提供了一个中间件,阿里也提供里一个 ioredis,性能和使用方式比官方提供的要好
const { createClient } = require('redis');
// 创建 Redis 客户端
const client = createClient({
host: '127.0.0.1',
port: 6379,
password: 'your_password'
});
// 设置键值对
client.set('myKey', 'Hello, Redis!', (err, reply) => {
if (err) {
console.error(err);
} else {
console.log('Set reply:', reply);
}
});
// 获取键值对
client.get('myKey', (err, reply) => {
if (err) {
console.error(err);
} else {
console.log('Get reply:', reply);
}
});
// 关闭连接
client.quit();
HSET
HSET
是 Redis 中用于将哈希表中的一个字段设置为指定值的命令。哈希表是 Redis 中的一种数据结构,用于存储字段和与字段关联的值之间的映射。HSET
的基本语法如下:
HSET key field value
-
key
: 哈希表的名称。 -
field
: 要设置的字段。 -
value
: 要设置的值。
例如,要在名为 “user:1000” 的哈希表中设置字段 “username” 的值为 “john_doe”,可以使用以下命令:
HSET user:1000 username john_doe
如果该字段之前不存在,HSET
将创建一个新的字段并设置其值。如果字段已经存在,将会更新字段的值。
在 Node.js 中使用 redis
模块执行 HSET
操作的示例代码如下:
const redis = require('redis');
const client = redis.createClient();
// 哈希表的名称
const key = 'user:1000';
// 要设置的字段和值
const field = 'username';
const value = 'john_doe';
// 执行 HSET 命令
client.hset(key, field, value, (err, result) => {
if (err) {
console.error(err);
} else {
console.log(result); // 输出 1 表示设置成功,0 表示字段已存在,进行更新
}
// 关闭 Redis 连接
client.quit();
});
在上述示例中,client.hset(key, field, value, callback)
是执行 HSET
操作的方法,其中 key
是哈希表的名称,field
是要设置的字段,value
是要设置的值,callback
是回调函数,用于处理操作结果。
哈希表:
哈希表(Hash Table)是一种常见的数据结构,用于存储键值对(key-value pairs)。它通过将键(key)通过哈希函数映射到一个索引,然后在该索引位置存储相应的值,从而实现快速的数据查找、插入和删除。
哈希表的主要特点包括:
- 快速查找: 通过哈希函数计算键的哈希值,可以直接定位到对应的存储位置,实现 O(1) 时间复杂度的查找操作。
- 高效插入和删除: 通过哈希函数计算哈希值,可以快速找到存储位置,从而实现高效的插入和删除操作。
- 冲突处理: 由于哈希函数可能导致不同键映射到相同的索引,可能发生冲突。哈希表使用一些方法来处理冲突,常见的方法包括链地址法(Chaining)和开放地址法(Open Addressing)。
- 灵活的键值对存储: 哈希表可以存储任意类型的键和值,键和值之间是一一对应的关系。
在哈希表中,每个键都通过哈希函数转换为一个唯一的索引。然后,值存储在该索引位置。当需要查找、插入或删除时,系统可以通过哈希函数计算出对应的索引位置,以快速访问数据。
哈希表在计算机科学中被广泛应用,常见的实现包括在编程语言中的字典(例如 Python 的字典、JavaScript 的对象),数据库中的索引结构等。
hset与set的区别:
在 Redis 中,SET
和 HSET
是两个不同的命令,分别用于设置不同类型的数据。
- SET:
-
SET
命令用于设置存储在 Redis 数据库中的字符串值。 - 语法:
SET key value
- 示例:
SET myKey "Hello, World!"
- HSET:
-
HSET
命令用于在哈希表中设置指定字段的值。 - 语法:
HSET key field value
- 示例:
HSET user:1000 username john_doe
区别:
- 数据结构:
SET
用于设置单个字符串值,而HSET
用于在哈希表中设置字段和值的映射关系。 - 使用场景:
- 使用
SET
适合存储单一值,例如简单的字符串或数字。 -
HSET
命令适合用于存储表示一个实体的多个属性的数据,其中每个属性都对应于哈希表中的一个字段,而该字段的值则表示该属性的具体值。使用 HSET 的好处在于它提供了一种结构化的方式来存储和获取实体的多个属性,而不是将它们散落在不同的键值对中。这在某些场景下可以提高数据的组织和管理效率。
- 命令参数:
-
SET
只需提供键名和要存储的值。 -
HSET
需要提供键名、字段和要存储的值。
以下是在 Node.js 中使用 redis
模块执行这两个命令的简单示例:
const redis = require('redis');
const client = redis.createClient();
// 使用 SET 设置字符串值
client.set('myKey', 'Hello, World!', (err, result) => {
if (err) {
console.error(err);
} else {
console.log(result); // 输出 OK 表示设置成功
}
});
// 使用 HSET 设置哈希表中的字段和值
client.hset('user:1000', 'username', 'john_doe', (err, result) => {
if (err) {
console.error(err);
} else {
console.log(result); // 输出 1 表示设置成功,0 表示字段已存在,进行更新
}
});
// 关闭 Redis 连接
client.quit();
总体而言,选择使用 SET
还是 HSET
取决于你的数据模型和使用需求。
Redis和memcached区别与选型: