redis入门
redis 简单介绍
Redis 是完全开源免费的,遵守 BSD 协议,是一个高性能的 key-value 数据库,它也属于 nosql。 Redis 和 Memcached 类似,都是内存级别的数据缓存,主要用户数据缓存,它支持存储的 value 类型相对 更多,包括 string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和 hash(哈希类型)。
Redis 不仅有丰富的特性(数据持久化到硬盘、 publish/subscribe、 key 过期),还有极高性能;
安装
- 由于官网不提供exe 的安装包 https://github.com/MicrosoftArchive/redis/releases
- 安装过程 next... next ....
- 或者使用 zip文件解压后得到
在安装目录下 redis-cli.exe 表示客户端启动工具 和 redis-server.exe表示服务端启动工具
直接cd 到当前目录 启动 服务和 启动 客户端工具
正确显示端口表示连接成功
redis.windows-service.conf 修改一些配置
使用
- 在 node 中使用 要 安装; npm install redis --save
// 安装redis npm i redis --save
// 启动 redis-server.exe redis.windows.conf
// 另一个窗口进入 redis-cli.exe -h 127.0.0.1 -p 6379
const redis = require('redis');
// 创建客户端;
const redisClient = redis.createClient(6379,'127.0.0.1');
// 监控错误;
redisClient.on('error',err=>{
console.error(err);
})
// 设置 值 获取值;
redisClient.set('myname','kg',redis.print);
redisClient.get('myname',(err,val)=>{
if(err){
console.error(err);
return
}
console.log(val);
// 一旦所有等待中的回复(如果有的话)顺利写入到客户端,连接就会被关闭。
redisClient.quit();
})
语法和 可存取数据类型
- Redis 字符串数据类型的相关命令用于管理 redis 字符串值。
查看所有的 key: keys *
普通设置: set key value
设置并加过期时间: set key value EX 30 表示 30 秒后过期
获取数据: get key
删除指定数据: del key
删除全部数据: flushall
查看类型: type key
设置过期时间: expire key 20 表示指定的 key5 秒后过期
- Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或 者尾部(右边)
列表右侧增加值: rpush key value
列表左侧增加值: lpush key value
右侧删除值: rpop key
左侧删除值: lpop key
// lrange key start end 可以获取范围 其中 0 表示列表的第一个元素 1 表示列表的第二个元素
// -1 表示列表的最后一个元素 -2 表示列表的倒数第二个元素
获取数据: lrange key 0 -1
删除指定数据: del key
删除全部数据: flushall
查看类型: type key
- Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数 据。它和列表的最主要区别就是没法增加重复值
给集合增数据: sadd key value
删除集合中的一个值: srem key value
获取数据: smembers key
删除指定数据: del key
删除全部数据: flushall
- Redis hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。
设置值 hmset : hmset zhangsan name "张三" age 20 sex “男” // 一次设置多个
设置值 hset : hset zhangsan name "张三" // 一次设置一个
获取数据: hgetall key
删除指定数据: del key
删除全部数据: flushall
Redis 订阅发布
- Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。
- 夸服务器通讯
一台服务器发布消息
其他多台可以订阅
// 发布
var redis = require("redis"),
client = redis.createClient(6379,'127.0.0.1');
// 发布
client.publish('testPublish', 'message from publish.js');
// 订阅
var redis = require("redis"),
client = redis.createClient(6379,'127.0.0.1');
// 监听广播 监听testPublish 这名字的广播;
client.subscribe('testPublish');
client.on('message', function(channel, msg){
console.log('client.on message, channel:', channel, ' message:', msg); });