redis是什么?
Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。它支持字符串、哈希表、列表、集合、有序集合,位图,hyperloglogs等数据类型。内置复制、Lua脚本、LRU收回、事务以及不同级别磁盘持久化功能,同时通过Redis Sentinel提供高可用,通过Redis Cluster提供自动分区。
redis
redis的优势
- 速度快
(1) 因为数据存在内存中,类似于 HashMap ,HashMap 的优势就是查找和操作的时间复杂度都是O (1) 。
(2) Redis 本质上是一个 Key-Value 类型的内存数据库,很像Memcached ,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据 flush 到硬盘上进行保存。fork子进程持久化。
(3) 因为是纯内存操作,Redis 的性能非常出色,每秒可以处理超过 10 万次读写操作,是已知性能最快的 Key-Value 数据库。
- 支持丰富数据类型: String ,List,Set,Sorted Set,Hash 。
Redis 的出色之处不仅仅是性能,Redis 最大的魅力是支持保存多种数据结构,此外单个 Value 的最大限制是1GB,不像 Memcached只能保存1MB的数据,因此Redis可以用来实现很多有用的功能
- 丰富的特性
订阅发布 Pub / Sub 功能
Key 过期策略
事务
支持多个 DB
计数
- 持久化存储
Redis 提供 RDB 和 AOF 两种数据的持久化存储方案,解决内存数据库最担心的万一 Redis 挂掉,数据会消失掉
redis的缺点
- 由于 Redis 是内存数据库,所以,单台机器,存储的数据量,跟机器本身的内存大小。虽然 Redis 本身有 Key 过期策略,但是还是需要提前预估和节约内存。如果内存增长过快,需要定期删除数据。
- redis是单线程的,单台服务器无法充分利用多核服务器的CPU
java连接redis(简单测试)
1、先在pom文件导入依赖
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.1.0</version>
</dependency>
2、然后创建一个类用来测试连接,创建main方法
//java断通过 jedis操作redis服务器
public static void main(String []args){
Jedis jedis = new Jedis("这里写服务器的地址",6379);
System.out.println(jedis.ping());
//连接成功
}
如果结果为PONG则表示连接成功,如果没成功,记得关闭防火墙,切记要打开6379端口号
3、写一个简单的测试类
@Test
void contextLoads() {
//获取连接
Jedis jedis = new Jedis("106.13.180.225",6379);
jedis.set("userName","jack");
String userName = jedis.get("userName");
System.out.println("redis的name是:"+userName);
jedis.close();
}
运行结果:
redis的name是:jack
然后再xshell端查看是否存储成功
127.0.0.1:6379> get userName
"jack"
127.0.0.1:6379>
测试成功!