redis学习笔记

概述

redis可以当作缓存来使用,存在内存里,比读数据库更快,但是比从内存变量里取数据还是要慢不少的

redis,sql,内存变量的对比

按存取速度来看,内存变量最快,sql最慢,但按照持久化的角度来说正好相反;

各有优缺点,按需选择使用。

redis的原理

redis和内存变量一样都是存储在内存中,但是redis却慢不少,原因是redis的每个操作都需要经过网络传输和Redis服务器的处理,需要花费时间

redis能够将数据持久化到磁盘,并且可以设置持久化时间,不想内存变量,一旦生命周期结束,就会被垃圾回收制度清除。

操作(因为我用node开发,所以按nodejs为例)

创建连接

const Redis = require('ioredis');
// 创建 Redis 连接
const redis = new Redis({
  host: 'localhost',  // 替换为实际的 Redis 主机
  port: 6379,         // 替换为实际的 Redis 端口
});

。。。。。。

redis.quit()    // 用完记得关闭redis

存入数据

1.普通数据

redis.set('name', 'John')

set的第一个参数是key,第二个参数是value

2.hash

redis.hmset('myHash', obj);

3.list

redis.rpush(...)

 4.set

redis.sadd('mySet', ...set)

取出数据

1.普通数据

redis.get('name')

2.hash

redis.hgetall('myHash')

3.list

redis.lrange('myList', 0, -1)
// 第二个参数表示开始下标,第三个参数表示结束下标,如果第三个参数为-1表示后面的全部取

4.set

redis.smembers('mySet')

Geo

1.geoadd(添加坐标到redis)

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
        }
    });

2.geopos(求指定位置坐标)

redis.geopos('所属一系列坐标的名称', '坐标名1', '坐标名2',...)
// 不存在的返回 nil

3.geodist(求两点距离)

redis.geodist('坐标1','坐标2','单位(m/km/mi/ft)')

4.georadius

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);    
// 取最近的一个

5.georadiusbymember

redis.georadiusbymember('一系列坐标名', '坐标名', radius, m|km|ft|mi, [WITHCOORD], [WITHDIST], [WITHHASH], [COUNT count], [ASC|DESC], [STORE key], [STOREDIST key])

6.geohash(获取坐标hash值)

redis.geohash('一系列坐标名', '坐标名')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值