ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

redis 常用操作

2020-04-30 18:02:46  阅读:332  来源: 互联网

标签:常用 myhash myset redis key integer 操作 foo


简述

redis 本身的下载与编译参见官网下载

js 使用 ioredis 来操作。

const Redis = require("ioredis");

// 连接
const redis = new Redis({
  port: process.env.redisPort,
  host: process.env.redisEndpoint,
  password: process.env.redisPW,
});

对于多数 redis 的命令,js 都有函数来代理操作,其格式如下

redis[SOME_REDIS_COMMAND_IN_LOWERCASE](ARGUMENTS_ARE_JOINED_INTO_COMMAND_STRING)

举个例子,redis.set("mykey", "Hello") 就等同于 redis> SET mykey "Hello"

key-value 增删改查

命令官方文档 GETSET key value

- SET key value [expiration EX seconds|PX milliseconds] [NX|XX]
- GET key

redis> GETSET foo "bar" "EX" 10
OK
redis> GET foo
"bar"

用 JS 操作如下

// js 设置 redis.set("foo", "bar");
// 等效于命令 redis> SET foo "bar"
// 返回 promise
redis.set("foo", "bar");

// 设置并且过期时间是 10 秒
redis.set("foo", "bar", "EX", 10);

// 支持 callback 模式返回
redis.get("foo", function (err, result) {
  if (err) {
    console.error(err);
  } else {
    console.log(result); // 结果 bar
  }
});

// 或者是 then 调用
redis.get("foo").then(function (result) {
  console.log(result);
});

// 删除
redis.del("foo");

无序集合操作

- SADD key member [member ...]  添加
- SMEMBERS key  列出成员
- SCARD key  查看集合的元素数量
- SCARD key  查看集合的元素数量
- SPOP key [count]  从集合中推出最近加入的元素
- SREM key member [member ...]  删除指定元素

redis> SADD myset 7
(integer) 1
redis> SADD myset 5
(integer) 1
redis> SADD myset 7
(integer) 0
redis> SADD myset 6
(integer) 1
redis> SCARD myset
(integer) 3
redis> SMEMBERS myset
1) "5"
2) "6"
3) "7"
redis> SPOP myset
"5"

redis> SREM myset 7
(integer) 1
redis> SMEMBERS myset
1) "6"

简要提几个 js 的操作

// 下列两种 sadd 效果相同:
redis.sadd("myset", 1, 3, 5, 7);
redis.sadd("myset", [1, 3, 5, 7]);

// 查看成员
// 返回 promise
redis.smembers("myset")

redis.spop("set"); // Promise resolves to "5" or another item in the set

有序集合

与之相近的还有 ZADD,这是另外一种有序的集合,具体见 redis官网 ZADD,总之操作举例如下

> ZADD sortedSet 1 "one"
> ZADD sortedSet 3 "three"
> ZADD sortedSet 6 "six"
> ZADD sortedSet 2 "two"

> ZRANGE sortedSet 0 -1
1) "one"
2) "two"
3) "three"
4) "six"
// 添加
redis.zadd("sortedSet", 1, "one", 3, "three", 6, "six", 2, "two", );
// 相当于 redis> ZRANGE sortedSet 0 -1
redis.zrange("sortedSet", 0, -1).then((res) => console.log(res));

Hash Map 的操作

> hset myhash key1 "value1"
(integer) 1
> hset myhash key6 "value6"
(integer) 1
> hset myhash key2 "value2"
(integer) 1
> hget myhash key6
"value6"
> hgetall myhash
1) "key1"
2) "value1"
3) "key6"
4) "value6"
5) "key2"
6) "value2"
// myhash 是哈希 map 集名,field1 是 key,Hello 是 value
redis.hset("myhash", "key1", "value1");
redis.hget("myhash", "key2").then((res) => console.log(res)); // value2
redis.hgetall("myhash").then((res) => console.log(res));

其他相关的命令

HDEL 删除
HEXISTS 判断某键是否存在
HGET
HGETALL
HKEYS 获取所有键名
HLEN 判断 hash map 长度
HSET
HVALS 获取所有键值

订阅发布

var Redis = require("ioredis");
var redis = new Redis();
var pub = new Redis();

// 同时订阅 news 和 music 两个通道,
redis.subscribe("news", "music", function (err, count) {
  // `count` represents the number of channels we are currently subscribed to.
    
  // 发布新消息
  pub.publish("news", "Hello world!");
  pub.publish("music", "Hello again!");
});

// 监听 message 事件。
redis.on("message", function (channel, message) {
  // Receive message Hello world! from channel news
  // Receive message Hello again! from channel music
  console.log("Receive message %s from channel %s", message, channel);
});

参考

redis 官网

github-ioredis

标签:常用,myhash,myset,redis,key,integer,操作,foo
来源: https://www.cnblogs.com/everlose/p/12810270.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有