redis——redis简介及基本交互方法
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简介及基本交互方法相关推荐
- 《Redis实战》一1.2 Redis数据结构简介
本节书摘来异步社区<Redis实战>一书中的第1章,第1.2节,作者: [美]Josiah L. Carlson(约西亚 L.卡尔森)译者: 黄健宏 责编: 杨海玲,更多章节内容可以访问云 ...
- 【Redis教程】与Python交互03
请参考视频:redis教程 目录 3.1redis中常用命令 3.2redis与Python的交互 安装:pip install redis==3.3.5 连接: RtrictRedis对象与pyth ...
- 第一章 Redis基础(简介+下载和安装+基本操作)----黑马
第一章 Redis基础(简介+下载和安装+基本操作) ----黑马 文章目录 第一章 Redis基础(简介+下载和安装+基本操作) ----黑马 学习目标: 1. Redis 简介 1.1 NoSQL ...
- redis缓存失效时间设为多少_java操作Redis缓存设置过期时间的方法
关于Redis的概念和应用本文就不再详解了,说一下怎么在java应用中设置过期时间. 在应用中我们会需要使用redis设置过期时间,比如单点登录中我们需要随机生成一个token作为key,将用户的信息 ...
- Redis详解(一)------ redis的简介与安装
工作中一直在用 Redis,但是一直没有进行系统的总结,这个系列的博客将整体的介绍 Redis 的用法. 1.Redis 的简介 Redis:REmote DIctionary Server(远程字典 ...
- java+cache使用方法_java相关:Spring boot redis cache的key的使用方法
java相关:Spring boot redis cache的key的使用方法 发布于 2020-8-16| 复制链接 摘记: 在数据库查询中我们往往会使用增加缓存来提高程序的性能,@Cacheabl ...
- 【redis】java操作redis时,StringRedisTemplate的expire()方法的作用,什么时候使用
java操作redis时,StringRedisTemplate的expire()方法的作用,什么时候使用 //重新设置过期时间为30分钟,刷新时间 redisTemplate.expire(MsOp ...
- redis在php上使用教程,Redis在PHP的一些使用方法
Redis 对于程序开发者来说,拥有很大的优势,能学好这些重点知识一定能提高我们的能力,本文主要和大家分享Redis在PHP的一些使用方法,希望能帮助到大家. ①. 数据类型首先我们需要根据 Redi ...
- redis数据库及与python交互
目录 redis数据操作 与python交互使用 redis数据操作 1.string类型:主要存储字符串 操作 命令 设置键值 set key value 设置键值与过期时间 setex key s ...
最新文章
- 肖仰华:知识图谱构建的三要素、三原则和九大策略 | AI ProCon 2019
- [转] Nexus OSS 3.xx 体验
- 鸿雁电器oa系统中决策支持模块效果
- 【面试题】struts2的工作流程
- [Python人工智能] 二.TensorFlow基础及一元直线预测案例
- 关于dlg和pro的问题
- 5920. 分配给商店的最多商品的最小值
- Apache实验-目录别名
- div背景透明_为什么css3实现background-image和半透明边框这么麻烦
- Python中xPath技术和BeautifulSoup的使用
- 如何解决aText for mac不响应的教程
- java基础面试题之:super与this的区别
- AlertDialog源码解析之一
- 全国省份简称(备用)
- 关于将图片转成base64的方法
- Session-判断用户登陆验证码是否正确
- The Development of Han Chinese’s Cuisine and Diet
- 2021-05-02 收心继续
- Packet Data Convergence Protocol (PDCP)阅读笔记
- 涂鸦,Canvas绘图
热门文章
- 前向星及spfa大法
- html代码_HTML代码与基础
- VS2019/openGL/freeglut配置
- 开启防火墙并添加出入站规则
- Pycharm不能用了
- PspNet在MMsegmentation框架下成功训练Pascal VOC2012数据集及踩坑实录
- Font Awesome-为Bootstrap设计的图标字体
- wampserver启动报错:1 of 2 services running - 解决篇
- python http get 请求_Python-Http请求库-Requests and AIOHTTP的使用
- vue php 分页组件,基于Vue.js的表格分页组件