zoukankan      html  css  js  c++  java
  • Redis在Nodejs中的使用

    一、Redis 的类型
    值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。

    二、Redis 字符串 (Nodejs 中用的最多)

    Redis 字符串数据类型的相关命令用于管理 redis 字符串值。

    基本语法:

    查看所有的 key: 普通设置: 设置并加过期时间: 获取数据: 删除指定数据: 删除全部数据: 查看类型: 设置过期时间:
    keys *
    set key value
    set key value EX 30 get key
    del key
    flushall type key
    expire key 20
    表示 30 秒后过期
    表示指定的 key5 秒后过期

    demo:

    /*
    
    https://www.npmjs.com/package/redis
    
    1、安装
     
    npm install redis --save
    
    
    2、引入 建立连接
    
    
    var redis = require("redis"),
        client = redis.createClient();
    
    
    */
    
    var redis = require("redis"),
        client = redis.createClient(6379,'127.0.0.1');
    
    
    // client.set('username',"zhangsan");
    
    // client.get('username',(err,value)=>{
    //     if(err){
    //         console.log(err);
    //         return;
    //     }
    //     console.log(value);
    // })
    
    
    
    // client.set('username','张三');
    
    // client.set('username','张三',"EX",'5');
    
    
    // client.get('username',(err,val)=>{
    //     if(err){
    //         console.log(err);
    //         return;
    //     }
    
    //     console.log(val)
    
    // })
    
    
    //删除
    
    // client.del('name',(err,val)=>{
    //     if(err){
    //         console.log(err);
    //         return;
    //     }
    
    //     console.log(val)
    
    // })
    
    
    
    //字符串存储对象
    
    var userinfo={
    
        username:'zhangsan',
        age:'20'
    }
    
    client.set('userinfo',JSON.stringify(userinfo));
    
    
    client.get('userinfo',(err,result)=>{
    
        console.log(JSON.parse(result))
    })  

    三、Redis 列表

    Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或 者尾部(右边)

     

    基本语法:

    列表右侧增加值: rpush key value 
    列表左侧增加值: lpush key value
    右侧删除值: rpop key
    左侧删除值: lpop key
    获取数据: lrange key 
    删除指定数据:del key
    删除全部数据: flushall
    查看类型: type key

    demo:

    /*
    
    https://www.npmjs.com/package/redis
    
    1、安装
     
    npm install redis --save
    
    
    2、引入 建立连接
    
    
    var redis = require("redis"),
        client = redis.createClient();
    
    
    */
    
    var redis = require("redis"),
        client = redis.createClient(6379,'127.0.0.1');
    
    //设置值
    
    // client.rpush('userlist','张三');
    
    // client.rpush('userlist','李四');
    
    
    // client.lpush('userlist','aaa');
    
    // client.rpush('userlist','bbb');
    
    
    
    client.rpop('userlist');
    
    
    client.lrange('userlist',0,-1,(err,data)=>{
    
        if(err){
    
            console.log(err);
            return;
        }
    
        console.log(data);
    
    })

    四、Redis 集合

     

    Redis Set String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数 据。它和列表的最主要区别就是没法增加重复值
    基本语法:

     

    给集合增数据: sadd key value 
    删除集合中的一个值:srem key value 
    获取数据:smembers key 
    删除指定数据:del key
    删除全部数据:flushall

    demo:

    /*
    
    https://www.npmjs.com/package/redis
    
    1、安装
     
    npm install redis --save
    
    
    2、引入 建立连接
    
    
    var redis = require("redis"),
        client = redis.createClient();
    
    
    */
    
    var redis = require("redis"),
        client = redis.createClient(6379,'127.0.0.1');
    
    
    
    //删除所有的缓存数据
    
    /*
    client.flushall();
    
    
    
    client.flushall((err,val)=>{
    
        console.log(val);
    });
    */
    
    // client.sadd('sList','张三');
    
    // client.sadd('sList','李四');
    
    client.sadd('sList','王五','赵四');
    
    client.smembers('sList',(err,resutl)=>{
    
    
        console.log(resutl);
    
    })

    五、Redis 哈希

    Redis hash 是一个 string 类型的 field value 的映射表,hash 特别适合用于存储对象。

    基本语法:

    、
    设置值 hmset : hmset zhangsan name "张三" age 20 sex “男” 
    设置值 hset : hset zhangsan name "张三"
    获取数据:hgetall key

    demo:

    /*
    
    https://www.npmjs.com/package/redis
    
    */
    
    var redis = require("redis"),
        client = redis.createClient(6379,'127.0.0.1');
    
        
    //增加一条数据    
    // client.hset('userinfo','name',"zhangsan");
    
    
    // client.hset('userinfo','age',"20");
    
    
    
    // client.hmset('userinfo','name','zhangsna','age','20','sex','女');
    
    client.hgetall('userinfo',(err,result)=>{
    
        console.log(result);
    })

    六、Redis 订阅发布

    Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。 Redis 客户端可以订阅任意数量的频道。
    下图展示了频道 channel1 , 以及订阅这个频道的三个客户端 —— client2 client5 client1 之间的关系:

     

    当有新消息通过 PUBLISH 命令发送给频道 channel1 时, 这个消息就会被发送给订阅它的三个客 户端:

    发布

    client.publish('testPublish', 'message from publish.js');

    订阅

    client.subscribe('testPublish'); 
    client.on('message', function(channel, msg){
        console.log('client.on message, channel:', channel, ' message:', msg);
     });

    demo:server1.js

    /*
    
    https://www.npmjs.com/package/redis
    
    */
    
    var redis = require("redis"),
        client = redis.createClient(6379,'127.0.0.1');
    
        //发送消息  广播
    
        client.publish('sendServer01', 'this is news info');
    
        
        client.publish('sendServer02', 'this is product info');

    server2.js

    /*
    
    https://www.npmjs.com/package/redis
    
    */
    
    var redis = require("redis"),
        client = redis.createClient(6379,'127.0.0.1');
    
        //监听广播
        client.subscribe('sendServer01');
    
    
    
        client.subscribe('sendServer02');
    
        client.on('message',(channel,msg)=>{
    
    
            console.log(channel,msg)
        })

    server3.js

    /*
    
    https://www.npmjs.com/package/redis
    */
    
    var redis = require("redis"),
        client = redis.createClient(6379,'127.0.0.1');
    
     //监听广播
     client.subscribe('sendServer02');
     client.on('message',(channel,msg)=>{
    
         console.log(channel,msg)
     })

     

     

     

  • 相关阅读:
    在vue项目中使用live2d
    关于iview下拉菜单无法添加点击事件的解决办法
    简单理解undefine和null的区别
    228. Summary Ranges
    (剧本一则)趁你还年少
    论文阅读 | Improving Neural Conversational Models with Entropy-Based Data Filtering
    论文阅读 | Persuasion for Good: Towards a Personalized Persuasive Dialogue System for Social Good
    论文阅读 | Target-Guided Open-Domain Conversation
    论文阅读 | Multimodal Transformer Networks for End-to-End Video-Grounded Dialogue Systems
    论文阅读 | Observing Dialogue in Therapy: Categorizing and Forecasting Behavioral Codes
  • 原文地址:https://www.cnblogs.com/loaderman/p/11655375.html
Copyright © 2011-2022 走看看