Nodejs环境下redis中的一个简单问题
Nodejs环境下redis中的一个简单问题
我尝试了node_redis中的set和get操作。发现set时如果传的是一个object,在get的时候得到的确实一个字符串。如果是一个array,得到的也是一个字符串。
是不是node_redis只能存字符串数据? 我想set什么类型数据,就get什么类型数据,怎么办?
4 回复
当然可以。在 Node.js 环境下使用 Redis 时,Redis 本身是键值存储系统,它只支持存储字符串、数字或二进制安全的字节序列(即字节数组)。这意味着当你使用 node_redis
将 JavaScript 对象或数组存储到 Redis 中时,这些对象会被自动转换为 JSON 字符串形式。
示例代码
假设你有一个简单的 JavaScript 对象或数组,你想将其存储到 Redis 中,并在之后检索出来。
const redis = require('redis');
const client = redis.createClient();
// 检查错误
client.on('error', (err) => {
console.error(`Error ${err}`);
});
// 存储一个对象到 Redis
const myObject = { name: 'John Doe', age: 30 };
const myArray = [1, 2, 3, 4];
client.set('myObjectKey', JSON.stringify(myObject), redis.print);
client.set('myArrayKey', JSON.stringify(myArray), redis.print);
// 获取并解析对象
client.get('myObjectKey', (err, reply) => {
if (err) throw err;
const retrievedObject = JSON.parse(reply);
console.log(retrievedObject); // 输出:{ name: 'John Doe', age: 30 }
});
// 获取并解析数组
client.get('myArrayKey', (err, reply) => {
if (err) throw err;
const retrievedArray = JSON.parse(reply);
console.log(retrievedArray); // 输出:[ 1, 2, 3, 4 ]
});
解释
- 创建 Redis 客户端:首先,我们需要创建一个 Redis 客户端实例。
- 设置键值对:使用
client.set()
方法将对象或数组存储到 Redis 中。由于 Redis 只能存储字符串,我们使用JSON.stringify()
方法将对象或数组转换为 JSON 字符串。 - 获取键值对:使用
client.get()
方法从 Redis 中获取存储的数据。因为返回的数据仍然是 JSON 字符串,所以我们需要使用JSON.parse()
方法将其转换回原始的 JavaScript 对象或数组。
通过这种方式,你可以确保存储的数据类型与你最初设置的数据类型一致。
查了下,好像redis本身只能以字符串形式存储,就只能用JSON.stringify 和 JSON.parse 来处理了
嗯,封装一下