一般在哪里用Redis(一般在哪儿用redis)
Redis(Remote Dictionary Server)是一个开源的使用anysl语言编写的高性能key-value数据库,它可以用于存储各种类型的数据,包括字符串、数组、哈希表、集合和不定期更新的数据。
通常情况下,Redis在企业中被广泛用在如下场景中:
1. 应用的缓存:比较常见的在实现用户鉴权从而限制用户的访问,使用redis进行实现。在这里,token可以作为key,而客户端信息作为缓存中的value,开发者就可以使用api来将token放入键中,再将token信息放入缓存中。这样就可以实现就近访问鉴权,也可以将缓存中存储的用户信息放在临时缓存中,以此减少与数据库的交互,减少数据库的负担。
例如:
const redis = require(‘redis’);
const client = redis.createClient({
host: ‘127.0.0.1’,
port: 6379
});
// 将token放入键中
client.set(‘token’, token);
// 将token信息放入缓存中
client.set(‘userinfo’, userinfo);
2. 应用的计数器:比如商品购买次数,对某个活动的点击次数等都会使用Redis来记录,比如统计一段时间内显示RatingBar的点击次数:
代码示例:
const Redis = require(‘redis’);
// 连接redis
const client = Redis.createClient(6379); // Redis 端口
// 每次用户点击ratingBar,在redis减少一个计数
client.incr(‘ratingBarClicks’, function(err, reply) {
console.log(‘ratingBar clicks: ‘ + reply);
})
3. 应用的消息队列:异步任务把任务通过MQ写入到redis中,然后用另一个线程从中取出。
代码示例:
client.rpush(‘messageQueue’, ‘message content’);
// 从队列中取出任务
client.lpop(‘messageQueue’, function(err, reply) {
console.log(‘message content: ‘ + reply);
})
4. 应用的锁:关于权限的安全性,分布式环境下的互斥性处理,常常会使用Redis的设置key的有效期来实现互斥锁的效果。从而保证任务的安全执行。
代码示例:
// 执行锁定功能
client.set(‘TaskLock’, ‘locking’, ‘EX’, 5);
// 执行解锁功能
client.del(‘TaskLock’);