egg-redis

Redis 是完全开源免费的,遵守 BSD 协议,是一个高性能的 key-value 数据库,它也属于 nosql。
Redis 和 Memcached 类似,都是内存级别的数据缓存,主要用户数据缓存,它支持存储的 value 类型相对
更多,包括 string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和 hash(哈希类型)。
Redis 不仅有丰富的特性(数据持久化到硬盘、 publish/subscribe、 key 过期),还有极高性能,经测试
Redis 能读的速度是 110000 次/s,写的速度是 81000 次/s 。

windows 1 、下载 Redis 的软件
https://github.com/MicrosoftArchive/redis/releases

 nodejs安装

        npm install redis --save 或者 cnpm install redis --save

var redis = require('redis');
var client = redis.createClient(6379, 'localhost');
//设置数据
client.set('username', '李四');
client.set('username', '李四','EX','5'); //设置过期 5 秒
//获取数据
client.get('username', function(err, val){
console.log(val);
});

linux安装

1 、 检查是否有 redis yum 源    是否直接命令安装

yum search redis 

yum info redis

2 、 安装 epel 仓库  没有yum源 就安装此仓库 来支持安装
EPEL (Extra Packages for Enterprise Linux)是基于 Fedora 的一个项目,为“红帽系”的操作 系
统提供额外的软件包,适用于 RHEL、CentOS 和 Scientific Linux.

yum install epel-release -y

3 、 安装 redis 数据库 yum info redis yum install redis -y

4.systemctl start redis 启动 systemctl restart redis重启 systemctl enable redis 开机自启动

设置密码

vim  /etc/redis.conf 进入配置

requirepass foobared的下面加入 requirepass 123456

保存退出   redis-cli   auth 123456

vim 中撤销操作  esc 进入命令模式   特点不能输入文字   u回车  ctrl+r 恢复撤销

i 进入编辑模式   :q退出  :wq保存退出 :wq! 强制保存退出

:末行模式   esc命令模式下输入:进入  

reidis 类型 字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型

字符串类型也可以存储其他类型 需要使用JSON转换

哈希 其实就是对象  {name:'xx',age:18}  列表 集合其实就是数组

字符串基础语法

查看所有的 key: keys *
普通设置: set key value
设置并加过期时间: set key value EX 30 表示 30 秒后过期
获取数据: get key
删除指定数据: del key
删除全部数据: flushall
查看类型: type key
设置过期时间: expire key 20 表示指定的 key 20 秒后过期

列表基础语法

列表右侧增加值: rpush key value
列表左侧增加值: lpush key value
右侧删除值: rpop key
左侧删除值: lpop key
获取数据: lrange key
删除指定数据: del key
删除全部数据: flushall
查看类型: type key

nodejs 操作

var redis = require('redis');
var client = redis.createClient(6379, 'localhost');
client.rpush('testLists', 'a');
client.rpush('testLists', 'b');
client.rpush('testLists', 'c');
client.lpush('testLists', 2);
client.lpush('testLists', 1);
client.lrange('testLists',0, -1,(err,lists)=>{
if(err){
console.log(err);
return;
}
console.log(lists)
})

set 无序 无法增加重复值

基础语法

给集合增数据: sadd key value
删除集合中的一个值: srem key value
获取数据: smembers key
删除指定数据: del key
删除全部数据: flushall

nodejs

var redis = require('redis');
var client = redis.createClient(6379, 'localhost');
client.sadd('testSet', 1);
client.sadd('testSet', 'a');
client.sadd('testSet', 'bb');
client.smembers('testSet', function(err, v){
console.log(v);
});

哈希

基础语法

设置值 hmset : hmset zhangsan name "张三" age 20 sex “男”
设置值 hset : hset zhangsan name "张三"
获取数据: hgetall key

删除指定数据: del key
删除全部数据: flushall

var redis = require('redis');
var client = redis.createClient(6379, 'localhost');
client.hset('userinfo',"username", "zhangsan");
client.hmset('userinfo',"username","张三","age", "20","sex","男");
client.hgetall('userinfo',function(err,val){
console.log(val);
})

redis的pub/sub模式  可以实现聊天哦 可以实现跨服务器通信

发布方

client.publish('testPublish', 'message from publish.js');

订阅方 可以有多个订阅方

client.subscribe('testPublish');
client.on('message', function(channel, msg){
console.log('client.on message, channel:', channel, ' message:', msg);
});

只要发布方 一发布 订阅方直接做出回调

redis使用场景  有效避免高并发(点赞 排行榜   先缓存到redis  服务器端定时去取出数据存到数据库中)  首页缓存 短信验证码有效时间 等!

egg-redis的使用

npm i egg-redis  配置文件npm官网查询

egg封装redis服务

const Service = require('egg').Service;
class CacheService extends Service {
async set(key,value,seconds) {
const { redis } = this.app;
value = JSON.stringify(value);
if(!seconds){
await redis.set(key, value);
}else{
await redis.set(key, value, 'EX', seconds);
}
}
async get(key) {
const { redis } = this.app;
let data = await redis.get(key);
if (!data) return;
data = JSON.parse(data);
return data;
}
}
module.exports = CacheService;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值