Nodejs-使用Redis

0 阅读2分钟

1.redis-适配高并发

将数据暂存至内存,以达到提高数据读取的功能

image.png

2.Redis安装

Window下Redis的安装和部署详细图文教程(Redis的安装和可视化工具的使用) - 教程 - yangykaifa - 博客园

2.1 链接本地服务器

安装成功后在终端使用命令:

image.png 打开redis客户端进行连接

image.png

**Redis常用的服务指令**

卸载服务:`redis-server --service-uninstall`

开启服务:`redis-server --service-start`

停止服务:`redis-server --service-stop`

2.1 1 设置键值:(默认是存放到0号数据库(共有0-15,一共16个数据库))

image.png

image.png

2.1.2 切换数据库(使用select 数据库)

image.png

image.png

image.png

2.1.3 数据库下的数据是隔离的,若想将其他数据库数据迁移 则使用move

image.png GUI查看
image.png CLI查看
image.png

2.2 链接云服务器-了解即可

image.png

2.3 下载redis-insight-可进行GUI交互

Downloads | Redis image.png

3 Redis数据类型

特性StringHashListSetZSet
数据结构二进制安全字符串键值对映射表(field-value)双向链表无序不重复集合有序不重复集合(带score)
有序性❌ 无❌ 无✅ 插入顺序❌ 无✅ 按score排序
可重复性✅ 可重复(key唯一)field不可重复✅ 可重复❌ 不可重复成员不可重复,score可重复
最大元素数512MB(单个value)约40亿个field约40亿个元素约40亿个元素约40亿个成员
底层实现SDS(简单动态字符串)哈希表 / ziplist快速链表 quicklist哈希表 / intset跳表 skiplist + 哈希表
时间复杂度O(1)O(1)O(N)两端,O(N)中间O(1)O(log N)

image.png

3.1 操作列表

操作:向L1列表添加三个元素

3.1.1 使用LPUSH 向l1添加三个值

image.png

image.png

3.1.2 使用LRANGE 和索引下标查看l1列表的索引对应元素

image.png

3.1.3 使用LINSERT向l1插入

image.png

3.1.4 使用LINDEX使用索引下标查看对应值

image.png

3.1.5 使用LLEN 查看对应列表的长度

image.png

3.1.5 使用LPOP使用索引下标删除列表元素

image.png

3.2 操作集合(集合没顺序,且不重复)

3.2.1 使用SADD 添加集合

image.png

image.png

3.2.2 使用SMEMBERS 查看集合内容

image.png

3.2.3 使用SCARD查看集合内容个数

image.png

3.2.4 使用SPOP删除

image.png

3.3 ZSet有序集合

3.3.1 添加有序集合

image.png

image.png

3.3.2 使用ZRANGE进行正序排序有序集合

image.png

3.3.3 使用ZREVRANGE进行倒序排序有序集合

image.png

3.3.4 使用ZRANK 查看对应值的排名(从0开支)

image.png

4 使用Nodejs操作Redis

ioredis guide (JavaScript) | Docs

image.png

4.1 使用npm install ioredis安装redis

4.2 使用 npm install --save-dev @types/node安装ts支持

4.3 使用JavaScript插入myname到指定的1号数据库

const Redis = require('ioredis');
// 设置redis连接数据库为1
const redis1 = new Redis({db:1});

async function main() {
  await redis1.set('myName', 'Tom');
  console.log('设置成功');
  
  const value = await redis1.get('myName');
  console.log('获取到的值:', value);
  
  // 查看所有key
  const keys = await redis1.keys('*');
  console.log('所有key:', keys);
  
  redis1.disconnect();
}

main().catch(console.error);

image.png

image.png