Redis基本特性
Redis是一款功能强大、支持多种数据类型的数据库,它具有许多优秀的特性,具体如下:
- 支持多种计算机编程语言,如Java、C、C++、Python、PHP、Lua、Ruby、Node.js、C#、GoLand等;
- 具有丰富的数据类型,如String、List、Set、Hash、Sorted Set等;
- 读/写速度快,性能高。官方给出的数据是:Redis能读的数据是11万/s,写的数据是8.1万/s;
- 支持持久化。Redis的持久化也就是备份数据,它每隔一段时间就将内存中的数据保存在磁盘中,在重启的时候会再次加载到内存中,从而实现数据持久化。Redis的持久化方式是RDB和AOF;
- 可实现高可用主从复制,主节点做数据副本;
- 实现分布式集群和高可用。Redis Cluster支持分布式,进而可以实现分布式集群;Redis Sentinel支持高可用。
Redis的使用场景
- 做缓存。这是Redis使用最多的场景。Redis能够替代Memcached。使用Redis,不需要每次都重新生成数据,而且它的缓存数据和查询数据比较快,使用也比较方法。比如,实现数据查询、缓存新闻消息内容、缓存商品内容或购物车等。
- 做计数器应用。Redis的命令具有原子性,它提供了INCR、DECR、GETSET、INCRBY等相关命令来构建计数器系统。可以使用Redis来记录一个热门帖子的转发数、评论数。通过Redis的原子递增,可以实现在任何时候封锁一个IP地址等。
- 实现消息队列系统。Redis运行稳定,速度快,支持模式匹配,也可以实现消息订阅发布。Redis还有阻塞队列的命令,能够让一个程序在执行时被另一个程序添加到队列中。比如,实现秒杀、抢购等。
Redis Java客户端
Jedis:轻量、简洁、支持全面的Redis操作,但是不是线程安全的。
lettuce:lettuce 底层基于 Netty,支持高级的 Redis 特性,比如哨兵,集群,管道,自动重新连接和Redis数据模型。支持异步,并且线程安全。
Redisson:使用者对 Redis 的关注分离,提供很多分布式相关操作服务,例如,分布式锁,分布式集合,可通过Redis支持延迟队列等。