redis可以当作缓存来使用,存在内存里,比读数据库更快,但是比从内存变量里取数据还是要慢不少的
按存取速度来看,内存变量最快,sql最慢,但按照持久化的角度来说正好相反;
各有优缺点,按需选择使用。
redis和内存变量一样都是存储在内存中,但是redis却慢不少,原因是redis的每个操作都需要经过网络传输和Redis服务器的处理,需要花费时间
redis能够将数据持久化到磁盘,并且可以设置持久化时间,不想内存变量,一旦生命周期结束,就会被垃圾回收制度清除。
const Redis = require('ioredis');
// 创建 Redis 连接
const redis = new Redis({
host: 'localhost', // 替换为实际的 Redis 主机
port: 6379, // 替换为实际的 Redis 端口
});
。。。。。。
redis.quit() // 用完记得关闭redis
redis.set('name', 'John')
set的第一个参数是key,第二个参数是value
redis.hmset('myHash', obj);
redis.rpush(...)
redis.sadd('mySet', ...set)
redis.get('name')
redis.hgetall('myHash')
redis.lrange('myList', 0, -1)
// 第二个参数表示开始下标,第三个参数表示结束下标,如果第三个参数为-1表示后面的全部取
redis.smembers('mySet')
redis.geoadd('这一系列坐标的名字', obj.longitude, obj.latitude, '每个坐标的名字', (err, reply) => {
if (err) {
console.error('Error adding location:', err);
} else {
console.log('Location added:', reply,obj.longitude, obj.latitude); // 输出: 1
}
});
redis.geopos('所属一系列坐标的名称', '坐标名1', '坐标名2',...)
// 不存在的返回 nil
redis.geodist('坐标1','坐标2','单位(m/km/mi/ft)')
redis.georadius('一系列坐标名', longitude, latitude, radius, m|km|ft|mi, [WITHCOORD], [WITHDIST], [WITHHASH], [COUNT count], [ASC|DESC], [STORE key], [STOREDIST key])
// WITHDIST: 在返回位置元素的同时, 将位置元素与中心之间的距离也一并返回。
// WITHCOORD: 将位置元素的经度和纬度也一并返回。
// WITHHASH: 以 52 位有符号整数的形式, 返回位置元素经过原始 geohash 编码的有序集合分值。 这个选项主要用于底层应用或者调试, 实际中的作用并不大。
// COUNT 限定返回的记录数。
// ASC: 查找结果根据距离从近到远排序。
// DESC: 查找结果根据从远到近排序。
// eg.
// redis.georadius('locations', item.longtitude, item.latitude, 200, 'km', 'ASC', 'WITHCOORD', 'COUNT', 1);
// 取最近的一个
redis.georadiusbymember('一系列坐标名', '坐标名', radius, m|km|ft|mi, [WITHCOORD], [WITHDIST], [WITHHASH], [COUNT count], [ASC|DESC], [STORE key], [STOREDIST key])
redis.geohash('一系列坐标名', '坐标名')