Redis学习

最近在向node后台开发看齐,所以了解了一些关于redis的知识,这里作为笔记

  • 安装redis

    使用home-brew

    brew install redis

成功的提示信息

To have launchd start redis at login:
ln -sfv /usr/local/opt/redis/*.plist ~/Library/LaunchAgents
Then to load redis now:
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.redis.plist
Or, if you don’t want/need launchctl, you can just run:
redis-server /usr/local/etc/redis.conf
复制代码

使用cat命令查看配置信息

cat /usr/local/etc/redis.conf

其中指定了端口等信息

bind 127.0.0.1 ::1
bind 127.0.0.1
port 6379
tcp-backlog 511
timeout 0
tcp-keepalive 300
...
复制代码
  • 启动redis redis-server /usr/local/etc/redis.conf 终端输出
    9400:C 17 Sep 21:51:36.794 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo9400:C 17 Sep 21:51:36.795 # Redis version=4.0.11, bits=64, commit=00000000, modified=0, pid=9400, just started9400:C 17 Sep 21:51:36.795 # Configuration loaded9400:M 17 Sep 21:51:36.796 * Increased maximum number of open files to 10032 (it was originally set to 7168)._.__.-``__ ''-.__.-``    `.  `_.  ''-._           Redis 4.0.11 (00000000/0) 64 bit.-`` .-```.  ```\/    _.,_ ''-._(    '      ,       .-`  | `,    )     Running in standalone mode|`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379|    `-._   `._    /     _.-'    |     PID: 9400`-._    `-._  `-./  _.-'    _.-'|`-._`-._    `-.__.-'    _.-'_.-'||    `-._`-._        _.-'_.-'    |           http://redis.io`-._    `-._`-.__.-'_.-'    _.-'|`-._`-._    `-.__.-'    _.-'_.-'||    `-._`-._        _.-'_.-'    |`-._    `-._`-.__.-'_.-'    _.-'`-._    `-.__.-'    _.-'`-._        _.-'`-.__.-'9400:M 17 Sep 21:51:36.799 # Server initialized9400:M 17 Sep 21:51:36.800 * DB loaded from disk: 0.001 seconds9400:M 17 Sep 21:51:36.800 * Ready to accept connections
复制代码

这里可以看到redis启动成功,监听的端口是6379 新开一个tab窗口 输入redis-cli ping 可以看到控制台输出PONG 这就说明redis启动成功

  • 关闭redis

    • 在启动窗口按cmd+c或者直接关掉窗口结束进程
    • 执行redis-cli shutdown 输出redis-cli ping检验 控制台打印Could not connect to Redis at 127.0.0.1:6379: Connection refused 说明关闭成功

node端的简单使用

  • node安装redis npm install redis --save

  • 启动redis客户端

    const redis = require('redis');
    // 你启动的redis端口和ip地址+options(可去官网自行查阅资料)
    const client = redis.createClient(6379, '127.0.0.1', {});
    // 监听错误
    client.on('error', (err) => {console.log(err);
    })
    // 设置普通的string
    client.set("string key", "string val", redis.print);
    // 设置hash值
    client.hset("hash key", "hashtest 1", "some value", redis.print);
    client.hset(["hash key", "hashtest 2", "some other value"], redis.print);
    // 设置map值
    client.mset('key1', 'val1', ... 'keyn', 'valn', '[callback]'); //循环遍历
    client.hkeys("hash key", function (err, replies) {console.log(replies.length + " replies:");replies.forEach(function (reply, i) {console.log("    " + i + ": " + reply);});// 退出client.quit();
    });
    复制代码

    更多命令使用请参考: github.com/NodeRedis/n…

  • 漂流瓶小功能

    • throw方法

        exports.throw = (bottle, callback) => {bottle.time = bottle.time || Date.now();const bottleId = Math.random().toString(16);const type = {male: 0,female: 1};console.log('at redis.js:', bottle);/*client.SELECT选择数据库编号*/client.SELECT(type[bottle.type], function (event) {console.log(event);/*client.HMSET 保存哈希键值*/client.HMSET(bottleId, bottle, function (err, result) {if (err) {return callback({code: 0,msg: "过会儿再来试试吧!"});}console.log('at redis.js:', result);callback({code: 1,msg: result});/*设置过期时间为1天*/client.EXPIRE(bottleId, 86400);});});}
      复制代码
    • pick方法

          exports.pick = function (info, callback) {const type = {all: Math.round(Math.random()),male: 0,female: 1};console.log('info is:', info);info.type = info.type || 'all';client.SELECT(type[info.type], function () {/*随机返回当前数据库的一个键*/client.RANDOMKEY(function (err, bottleId) {if (!bottleId) {return callback({code: 0,msg: "大海空空如也..."});}/*根据key返回哈希对象*/client.HGETALL(bottleId, function (err, bottle) {if (err) {return callback({code: 0,msg: "漂流瓶破损了..."});}callback({code: 1,msg: bottle});/*根据key删除键值*/client.DEL(bottleId);});});});}
      复制代码
      • app.js
        const redislib = require('./lib/redis');redislib.throw({type: 'male',}, res => {console.log(res);})redislib.pick({type: 'male',}, res => {console.log('at callback:', res);});
      复制代码

      到这里已经跑通了程序,尽情享受redis吧~

      项目地址

转载于:https://juejin.im/post/5b9fb826f265da0aa664b529

笔记:后端 - Redis相关推荐

  1. Redis万字笔记 深入浅出redis

    笔记里有大量图片帮助你快速理解Redis 因为上传图片很麻烦这是无图片版的 想要有图片版的压缩包的可以在这里下载:后端+Redis+Redis笔记+加深记忆-Java文档类资源-CSDN文库 也可以关 ...

  2. 学习MSCKF笔记——后端、状态预测、状态扩增、状态更新

    学习MSCKF笔记--后端.状态预测.状态扩增.状态更新 学习MSCKF笔记--后端.状态预测.状态扩增.状态更新 1. 状态预测 2. 状态扩增 3. 状态更新 学习MSCKF笔记--后端.状态预测 ...

  3. Redis运维和开发学习笔记(4) Redis参数意义

    Redis运维和开发学习笔记(4) Redis参数意义 文章目录 Redis运维和开发学习笔记(4) Redis参数意义 参数意义 参数意义 Client连接 问题 id=567800790 addr ...

  4. Redis运维和开发学习笔记(2) redis持久化

    Redis运维和开发学习笔记(2) redis持久化 文章目录 Redis运维和开发学习笔记(2) redis持久化 持久化 持久化方式一:RDB 触发~~的三种~~方式 1. save命令 2. b ...

  5. Redis运维和开发学习笔记(3)redis搭建集群

    Redis运维和开发学习笔记(3)redis搭建集群 文章目录 Redis运维和开发学习笔记(3)redis搭建集群 Redis集群搭建 Redis集群搭建 cp /etc/redis.d/redis ...

  6. Spring中RedisTemplate方法中,redis相关操作笔记。[redis生成指定长度自增批次号,删除、设置过期时间等]

    Spring中RedisTemplate方法中,redis相关操作笔记. redis获取自增批次号 // opsForValue()生成long UUID = redisTemplate.opsFor ...

  7. StackExchange.Redis学习笔记(二) Redis查询 五种数据类型的应用

    StackExchange.Redis学习笔记(二) Redis查询 五种数据类型的应用 原文: StackExchange.Redis学习笔记(二) Redis查询 五种数据类型的应用 Connec ...

  8. King of Bots项目笔记——后端Bot Running System微服务

    King of Bots项目笔记--后端Bot Running System微服务 本文内容单纯为个人学习笔记,目的是总结学习内容,项目是y总的spring框架课,不具有任何参考意义. 创建botru ...

  9. [LBS学习笔记3]redis geo地理位置查询分析

    1.redis geo命令 1.1 redis6.2版本geo命令简介 redis自3.2版本开始,提供了地理位置相关的命令: GEOADD:添加空间元素 GEOPOS: 获取某个地理位置的坐标 GE ...

最新文章

  1. 讨论:如何降低Cocos2d开发的游戏包体大小
  2. 修改github用户名
  3. 071_html语言代码
  4. OpenCV中CalonderDescriptorExtractor
  5. 【Ubuntu】 Ubuntu16.04搭建NFS服务
  6. npm eject 暴露webpack报错,less或sass添加报错
  7. preview窗口 unity_Unity3D在Preview中打印日志的方法
  8. Python_迭代器Iterator
  9. iOS 算法的前世今生:算法原理、常用算法(二)加密算法
  10. 最小生成树模板 加 例题分析 (最小生成树类型汇总)
  11. 两台计算机怎样互相访问文件,两台电脑之间怎么互相传文件
  12. iOS 5 故事板进阶(4)
  13. HashSet底层实现原理
  14. 微信小程序对餐饮行业有哪些影响
  15. android温湿度传感节点指令源代码,Arduino+DHT11+OLED显示温湿度信息(附详细文档+源码)...
  16. HashMap1.7 扩容时产生死链
  17. mybatis-plus打印sql日志和参数到日志文件
  18. unix 时间戳 c语言,C语言实现字符转unix时间戳
  19. 靶机渗透练习69-DC1
  20. java 有10个硬盘有两个重要属性_2013年计算机一级B冲刺试题七及答案解析

热门文章

  1. insert sort
  2. Windows消息传递机制详解
  3. hdu 1325 Is It A Tree?
  4. pushlet单播与多播
  5. Git Bash中npm配置,加速下载等作用
  6. 如何在vmvare vsphere(ESXI)中移除磁盘中的文件
  7. Mysql介绍与安装LinuxmacOS系统
  8. opencv调节图片饱和度_OpenCV调整彩色图像的饱和度和亮度
  9. python gif 透明,Python3+试点批量处理简单的GIF到PNG并透明地去除背景色,python3Pillow,gif,转成,png,透明化,去掉...
  10. html 实现格子效果,div+css实现九宫格效果