nodejs+redis应用

摘要:
1.什么是Redis?它是一个基于BSD的开源日志类型,用ANSIC语言编写的键值数据库,支持网络、基于内存和持久性。

1.什么是Redis Redis是一个基于BSD开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API.
1.Redis存储的是一个个的键值对
2.通常用Redis做缓存数据库
3.Redis的五种数据类型(字符串,哈希,链表,无序集合,有序集合)
2.Redis安装 Redis官方不支持windows安装,所以我们这里以ubuntu为例
wget http://download.redis.io/redis-stable.tar.gz tar xzf redis-stable.tar.gz cd redis-stable make
3.Redis运行 Redis服务器默认使用6379端口
resis-server
也可以自己指定端口
redis-server --port 6380
客户端通过
redis-cli
来连接数据库服务器 也可以指定服务器地址和端口
redis-cli -h 127.0.0.1 -p 6380
测试客户端和服务器是否连通
PING
返回PONG说明连通了
4.Redis的基本使用 4.1 字符串 set key value 设置key的value get key 得到key的value incr key key如果是整型自增1 keys * 得到所有key
4.2 哈希 hset key filed value 设置key对象的field属性的value hget key filed 得到key对象的field属性的value hgetall key 得到key对象的所有的属性和值
4.3 链表
适合存储社交网站的新鲜事
lpush key value [value ...] 向链表key左边添加元素
rpush key value [value...] 向链表key右边添加元素
lpop key 移除key链表左边第一个元素
rpop key 移除key链表右边第一元素
lrange key start stop 获取链表中某一段,包含最大值,-1表示最后一个元素
4.4 集合类型 适合存储文章的标签,因为是唯一的 sadd key member [member ...] 向集合key中添加元素,如果元素已经存在则忽略 srem key member [member ...] 从集合key中删除元素 smembers key 返回集合key中所有的元素 sinter key [key ...] 多个集合执行交集运算 sdiff key [key ...] 多个集合执行差集运算 sunion key [key ...] 多个集合执行并集运算
4.5 有序集合
适用于通过文章访问量排序
zadd key score member [score member ...] 向有序集合key中加入一个或多个元素和分数,如果元素已经存在,则替换分数
zrem key member [member ...] 删除集合中一个或多个元素
zrange key start stop [withscores] 按元素分数从小到大顺序返回元素,如需获得对应元素的分数,在尾部加上withscores
zrevrange key start stop [withscores] 按元素分数从大到小顺序返回元素
5.Redis 数据库桌面管理工具 下载地址:http://redisdesktop.com/download 可以很方便的管理Redis数据库里的键值对
6.Redis 数据库其他说明 Redis默认支持16个数据库,编号0~15,每个数据库是独立的不能相互访问,可以通过
SELECT 数据库编号
来更换数据库 Redis不支持自定义数据库名字 Redis不支持每个数据库设置不同的密码
我们可以通过配置参数database修改支持的数据库个数,当选择的数据库编号超过最大数据库编号,默认使用最大数据库编号的数据库
清空当前数据库的所有内容
flushdb
清空所有数据库的所有内容
flushall
随机返回当前数据库的一个键
randomkey
删除一个或多个key
del key
返回给定哈希表中所有键的值
hvals key
如果需要将redis用作缓存,可以设置生存时间,这样就不会持久化存储 设置某个键的生存时间 1.(以秒为单位)
expire key time
2.(以毫秒为单位)
pexpire key time
以秒为单位返回给定key的剩余生存时间,没有设置生存时间则返回-1
tll key
下面我们来看一下怎么样在nodejs中使用redis 1.安装redis模块
npm install redis
通过redis.createClient(port,host,options)来连接redis服务器
var redis = require("redis"),
client = redis.createClient(6380,"117.121.25.228",{});

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

exports.pick = function(info,callback){
var type = {all:Math.round(Math.random()),male:0,female:1};
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);
});
});
});
}



https://www.jianshu.com/p/dbc1da93eae5

免责声明:文章转载自《nodejs+redis应用》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇面试分享:一年经验初探阿里巴巴前端社招wpf图片查看器,支持鼠标滚动缩放拖拽下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

MySQL复合主键下ON DUPLICATE KEY UPDATE语句失效问题

问题的起因,假设有一张表,里面保存了交易订单,每张订单有唯一的ID,有最后更新时间,还有数据,详情如下: 1 2 3 4 5 6 7 +-------+----------+------+-----+---------------------+-------+ |Field|Type|Null|Key|Default|Extra| +--...

Oracle数据库GLOBAL_NAMES参数的详细研究 (创建DBLINK时有用)

Oracle数据库GLOBAL_NAMES参数的相关知识是本文我们主要要介绍的内容,当GLOBAL_NAMES参数设置为TRUE时,使用DATABASE LINK时,DATABASE LINK的名称必须与被连接库的GLOBAL_NAME一致。下面做一个测试,在测试中,创建数据库链接的库为XJ(WINDOWS 2003 ORACLE 10g 10.2.0.1...

数据库SQL SERVER 2008R2 远程连接配置说明

SQL SERVER 2008 R2如何开启数据库的远程连接 环境要求: 首先准备好一台安装好SQL SERVER2008 R2的服务器。(仅适用于SQL SERVER2008 R2版本) 数据库远程建立步骤: 第一部分:在安装SQL Server 2008 R2的计算机上,点击开始 1选择程序中的“Microsoft SQL Server 2008 R2...

FIREDAC操作SQLITE内存数据库

SQLite不仅可以把数据库放在硬盘上,还可以放在内存中,经测试,同样条件下数据库放在内存中比放在硬盘上插入记录速度快差不多3倍。 但数据库放在内存中时有如下缺陷: 1、断电或程序崩溃后数据库就会消失,你需要定期Attach到硬盘上备份; 2、在内存中的数据库不能被别的进程访问(因为没名字,以后可能支持),即使在多线程下,也得使用同一句柄; 3、不支持像在...

Python SQLAlchemy入门教程(基本用法)

本文将以Mysql举例,介绍sqlalchemy的基本用法。其中,Python版本为2.7,sqlalchemy版本为1.1.6。 一. 介绍 SQLAlchemy是Python中最有名的ORM工具。 关于ORM: 全称Object Relational Mapping(对象关系映射)。 特点是操纵Python对象而不是SQL查询,也就是在代码层面考虑的是...

手把手教学在Springboot中搭建使用Guava cache,包教包会,不会我输一包辣条给你

 guava cache使用简介   概述   缓存是日常开发中经常应用到的一种技术手段,合理的利用缓存可以极大的改善应用程序的性能。   Guava官方对Cache的描述连接   缓存在各种各样的用例中非常有用。例如,当计算或检索值很昂贵时,您应该考虑使用缓存,并且不止一次需要它在某个输入上的值。   缓存ConcurrentMap要小,但不完全相同。最...