Redis是一个速度非常快的非关系数据库(non-relational database),它可以存储键(key)与5种不同类型的值(value)之间的映射(mapping),可以将存储在内存的键值对数据持久化到硬盘,可以使用复制特性来扩展读性能,还可以使用客户端分片1来扩展写性能,接下来的几节将分别介绍Redis的这几个特性。

其重点是在内存中存储,所以相比普通数据库,其IO效率会快很多。

在使用类似Redis这样的内存数据库时,一个首先要考虑的问题就是“当服务器被关闭时,服务器存储的数据将何去何从呢?”Redis拥有两种不同形式的持久化方法,它们都可以用小而紧凑的格式将存储在内存中的数据写入硬盘:第一种持久化方法为时间点转储(point-in-time dump),转储操作既可以在“指定时间段内有指定数量的写操作执行”这一条件被满足时执行,又可以通过调用两条转储到硬盘(dump-to-disk)命令中的任何一条来执行;第二种持久化方法将所有修改了数据库的命令都写入一个只追加(append-only)文件里面,用户可以根据数据的重要程度,将只追加写入设置为从不同步(sync)、每秒同步一次或者每写入一个命令就同步一次。

Redis可以存储键与5种不同数据结构类型之间的映射,这5种数据结构类型分别为STRING(字符串)、LIST(列表)、SET(集合)、HASH(散列)和ZSET(有序集合)。有一部分Redis命令对于这5种结构都是通用的,如DEL、TYPE、RENAME等;但也有一部分Redis命令只能对特定的一种或者两种结构使用

redis连接方法与sql等差不多,设置IP,端口,建立连接。

redis = require('redis'),//导入js模块
RDS_PORT = ,        //端口号
RDS_HOST = '',    //服务器IP
RDS_OPTS = {},            //设置项
redisdb = redis.createClient(RDS_PORT, RDS_HOST, RDS_OPTS);//创建连接redisdb.select(20);//指定分区库

createClient事件中会调用connerct、ready等相关方法,我们可以在此处打日志查看

redisdb.on('ready', function (res) {console.log('ready');
});redisdb.on('connect', function () {console.log('connect');
});

redis基本读写数据方法——set,get,del。

redis存储需要一个key(字符型),通过key作为下标从而进行设置、读取、删除等操作。

以下为js里redis模块的方法

get:get(key, function (err, data)  第一个返回值为错误码,第二个为数据。

set:set(key,value, function (err,result)返回错误码及操作情况,若成功返回OK

del:del(key, function (err, result) 返回错误码及影响行数,通常为1,如key不存在则返回0

顺便一提,由于js是异步的,所以像redis这种io相关操作要采用回调的方式实现。

我们简单做一个测试函数:

exports.redisdb = redisdb;function redis_opt(opt, key, value, callback) {if (opt == 'get') {redisdb.get(key, function (err, data) {if (err == null) {callback(data);}else {callback(err);}});}else if (opt == 'set'){redisdb.set(key,value, function (err,result) {if (err == null) {callback(result);}else {callback(err);}});}else if (opt == 'del'){redisdb.del(key, function (err, result) {if (err == null) {callback(result);}else {callback(err);}});}else{callback("error opt!");}}function testmain()
{console.log(redisdb);//var opt = "set";var key = "order1";var value ="hello word";redis_opt("set", key, value, function (data){ console.log(data);    });redis_opt("get", key, value, function (data) {console.log(data);});redis_opt("del", key, value, function (data) {console.log(data);});}testmain();

输出:

RedisClient {domain: null,_events:{ newListener: [Function],ready: [Function],connect: [Function] },_eventsCount: 3,_maxListeners: undefined,address: '主机IP:端口',connection_options: { port: 端口, hoconnection_id: 0,connected: false,ready: false,should_buffer: true,max_attempts: 0,command_queue: { [String: ''] _capacoffline_queue: { [String: '[object O
: 0 },pipeline_queue: { [String: ''] _capaconnect_timeout: 3600000,enable_offline_queue: true,retry_max_delay: null,retry_timer: null,retry_totaltime: 0,retry_delay: 200,retry_backoff: 1.7,attempts: 1,pub_sub_mode: 0,subscription_set: {},monitoring: false,message_buffers: false,closing: false,server_info: {},auth_pass: undefined,selected_db: undefined,old_state: null,fire_strings: true,pipeline: false,sub_commands_left: 0,times_connected: 0,buffers: false,options:{ port: 端口,host: '主机IP',socket_nodelay: true,socket_keepalive: true,return_buffers: false,detect_buffers: false },reply: 'ON',reply_parser:JavascriptRedisParser {optionReturnBuffers: false,optionStringNumbers: false,returnError: [Function: returnErrreturnFatalError: [Function: retureturnReply: [Function: returnRepname: 'javascript',offset: 0,buffer: null,bigStrSize: 0,bigOffset: 0,totalChunkSize: 0,bufferCache: [],arrayCache: [],arrayPos: [] },stream:Socket {connecting: true,_hadError: false,_handle:TCP {bytesRead: 0,_externalStream: {},fd: -1,reading: false,owner: [Circular],onread: [Function: onread],onconnection: null,writeQueueSize: 0 },_parent: null,_host: null,_readableState:ReadableState {objectMode: false,highWaterMark: 16384,buffer: [Object],length: 0,pipes: null,pipesCount: 0,flowing: true,ended: false,endEmitted: false,reading: false,sync: true,needReadable: false,emittedReadable: false,readableListening: false,resumeScheduled: true,defaultEncoding: 'utf8',ranOut: false,awaitDrain: 0,readingMore: false,decoder: null,encoding: null },readable: false,domain: null,_events:{ end: [Object],finish: [Function: onSocketFin_socketEnd: [Function: onSockeconnect: [Object],data: [Function],error: [Function],clientError: [Function],close: [Object],drain: [Function] },_eventsCount: 9,_maxListeners: undefined,_writableState:WritableState {objectMode: false,highWaterMark: 16384,needDrain: false,ending: false,ended: false,finished: false,decodeStrings: false,defaultEncoding: 'utf8',length: 0,writing: false,corked: 0,sync: true,bufferProcessing: false,onwrite: [Function],writecb: null,writelen: 0,bufferedRequest: null,lastBufferedRequest: null,pendingcb: 0,prefinished: false,errorEmitted: false,bufferedRequestCount: 0,corkedRequestsFree: [Object] }writable: true,allowHalfOpen: false,destroyed: false,_bytesDispatched: 0,_sockname: null,_pendingData: null,_pendingEncoding: '',server: null,_server: null } }
connect
ready
OK
hello word
1

注:

前面的为redisdb成员

connect、ready为自发事件里的日志内容

set返回OK

get返回hello word

del 返回 1

插入数据成功后:

开发相关资料参考地址

http://www.epubit.com.cn/article/200

http://doc.redisfans.com/

http://www.redis.cn/

redis——redis简介及基本交互方法相关推荐

  1. 《Redis实战》一1.2 Redis数据结构简介

    本节书摘来异步社区<Redis实战>一书中的第1章,第1.2节,作者: [美]Josiah L. Carlson(约西亚 L.卡尔森)译者: 黄健宏 责编: 杨海玲,更多章节内容可以访问云 ...

  2. 【Redis教程】与Python交互03

    请参考视频:redis教程 目录 3.1redis中常用命令 3.2redis与Python的交互 安装:pip install redis==3.3.5 连接: RtrictRedis对象与pyth ...

  3. 第一章 Redis基础(简介+下载和安装+基本操作)----黑马

    第一章 Redis基础(简介+下载和安装+基本操作) ----黑马 文章目录 第一章 Redis基础(简介+下载和安装+基本操作) ----黑马 学习目标: 1. Redis 简介 1.1 NoSQL ...

  4. redis缓存失效时间设为多少_java操作Redis缓存设置过期时间的方法

    关于Redis的概念和应用本文就不再详解了,说一下怎么在java应用中设置过期时间. 在应用中我们会需要使用redis设置过期时间,比如单点登录中我们需要随机生成一个token作为key,将用户的信息 ...

  5. Redis详解(一)------ redis的简介与安装

    工作中一直在用 Redis,但是一直没有进行系统的总结,这个系列的博客将整体的介绍 Redis 的用法. 1.Redis 的简介 Redis:REmote DIctionary Server(远程字典 ...

  6. java+cache使用方法_java相关:Spring boot redis cache的key的使用方法

    java相关:Spring boot redis cache的key的使用方法 发布于 2020-8-16| 复制链接 摘记: 在数据库查询中我们往往会使用增加缓存来提高程序的性能,@Cacheabl ...

  7. 【redis】java操作redis时,StringRedisTemplate的expire()方法的作用,什么时候使用

    java操作redis时,StringRedisTemplate的expire()方法的作用,什么时候使用 //重新设置过期时间为30分钟,刷新时间 redisTemplate.expire(MsOp ...

  8. redis在php上使用教程,Redis在PHP的一些使用方法

    Redis 对于程序开发者来说,拥有很大的优势,能学好这些重点知识一定能提高我们的能力,本文主要和大家分享Redis在PHP的一些使用方法,希望能帮助到大家. ①. 数据类型首先我们需要根据 Redi ...

  9. redis数据库及与python交互

    目录 redis数据操作 与python交互使用 redis数据操作 1.string类型:主要存储字符串 操作 命令 设置键值 set key value 设置键值与过期时间 setex key s ...

最新文章

  1. 肖仰华:知识图谱构建的三要素、三原则和九大策略 | AI ProCon 2019
  2. [转] Nexus OSS 3.xx 体验
  3. 鸿雁电器oa系统中决策支持模块效果
  4. 【面试题】struts2的工作流程
  5. [Python人工智能] 二.TensorFlow基础及一元直线预测案例
  6. 关于dlg和pro的问题
  7. 5920. 分配给商店的最多商品的最小值
  8. Apache实验-目录别名
  9. div背景透明_为什么css3实现background-image和半透明边框这么麻烦
  10. Python中xPath技术和BeautifulSoup的使用
  11. 如何解决aText for mac不响应的教程
  12. java基础面试题之:super与this的区别
  13. AlertDialog源码解析之一
  14. 全国省份简称(备用)
  15. 关于将图片转成base64的方法
  16. Session-判断用户登陆验证码是否正确
  17. The Development of Han Chinese’s Cuisine and Diet
  18. 2021-05-02 收心继续
  19. Packet Data Convergence Protocol (PDCP)阅读笔记
  20. 涂鸦,Canvas绘图

热门文章

  1. 前向星及spfa大法
  2. html代码_HTML代码与基础
  3. VS2019/openGL/freeglut配置
  4. 开启防火墙并添加出入站规则
  5. Pycharm不能用了
  6. PspNet在MMsegmentation框架下成功训练Pascal VOC2012数据集及踩坑实录
  7. Font Awesome-为Bootstrap设计的图标字体
  8. wampserver启动报错:1 of 2 services running - 解决篇
  9. python http get 请求_Python-Http请求库-Requests and AIOHTTP的使用
  10. vue php 分页组件,基于Vue.js的表格分页组件