概述
redis 是个内存数据库,由C语言编写.数据以kv
的形式来存储
访问性能高,速读快,掉电数据容易丢失,提供了持久化方案
特点
- redis由于是将数据存储在内存中, 故其读取的数据非常快, 每秒钟支持大约 80000次/s的写入操作和 110000次/s读取的操作
- redis提供了丰富的数据类型,其有 string,list hash set storted set 五种类型
注:需要注意: redis中的数据类型指的都是value的数据类型, 其key只有string类型 - redis支持将复制非常方便的复制其他任意一台装有redis数据库的服务器中
- redis的中的所有的操作都是原子性的, 从来保证数据的完整性
redis客户端工具 jedis
jedis的是一款用于redis的数据库的Java客户端工具, jedis提供了一套非常省力的API, 其最大的特点就是其API和redis的命令是相同的, 这样就大大降低了学习的成本, 其本身也是redis官方推荐的一款javaAPI
jedis 的常用api
Jedis jedis=new Jedis (“192.168.72.144”, 6379)
jedis.set(“age”, “19”);
String age = jedis.get(“age”);
System.out.println(age);
jedis连接池
当创建jedis的对象的时候, jedis会连接redis的服务器, 获取一个连接, 如果频繁的创建一个连接, 会造成资源的消耗, 在mysql中如果发生这样的现象, 采用的是连接池的技术,提前创建好几个连接,反复使用即可, 在redis中同样也是如此
从连接池中获取jedis的连接对象的工具类
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
public class JedisUtils {
private static JedisPool jedisPool;
static {
JedisPoolConfig poolConfig = new JedisPoolConfig();
poolConfig.setMaxIdle(5);//闲时最大的数量
poolConfig.setMaxTotal(100); //最大有100个
poolConfig.setMinIdle(3);//最小闲时的数量
jedisPool = new JedisPool(poolConfig, "192.168.72.144", 6379);
}
public Jedis getJedis() {
return jedisPool.getResource();
}
}
redis 的持久化
我们知道, redis是将数据存储在了内存当中, 那么当关闭服务器, 内存的资源也就会消失了, 这时存储在redis中的数据也会消失, 那么我们应该如何做呢?
在redis中已经提供了两种持久化的方案
RDB: redis提供的一种基于快照机制实现的持久化方案, 而快照就类似于照相机, 会将一个服务器某个时刻的一个状态整体保存下来, 快照文件一般都非常的小,只有几kb左右
- 优点: 由于持久化的文件非常小, 适合于做灾难恢复
- 缺点: 由于redis中持久化的时机问题, 会存在数据丢失的问题
AOF: redis提供的一种基于日志机制实现的持久化方案, 会将用户操作的所有的命令整体的记录下来保存到日志文件中,一般文件都比较庞大 - 优点: AOF机制可以让将用户所有的命令都记录下来, 顾其数据保存的比较完整, 不容易丢失
- 缺点: 持久化的文件比较庞大, 不利于灾难恢复
RDB保存机制;redis默认是开启RDB机制
redis中五种数据类型
-
- 字符串 String ----重点
- 特点: 存储所有的字符和字符串
- 应用场景: 做缓存使用
-
- 哈希 hash
- 特点: 相当于java中hashMap集合
- 应用场景: 可以存储javaBean对象, 此种使用场景不多,可被String替代
-
- list集合
- 特点: 相当于java中linkList, 是一个链表的结构
- 应用场景: 做任务队列,
- 在java中客户端提供了线程安全获取集合数据的方式
-
- set 集合
- 特点: 唯一, 无序
- 应用场景: 集合运算
- 例如去重复的操作
-
- 有序set集合: sorted set
- 特点:唯一, 有序
- 应用场景: 一般用来做排行榜