数据库–Redis

概念

Redis是一款高性能Nosql非关系型数据库

  • 数据之间没有关联关系
  • 数据存储在内存中(不是硬盘文件中)
  • 一般将数据存储在关系型数据库中,在nosql数据库中备份存储关系型数据库的数据

目前Redis支持的键值数据类型如下:

  • 字符串类型string

    • 存储:set key value
    • 获取:get key
    • 删除:del key
  • 哈希类型hash

    • 存储:hset key field value
    • 获取:
      • hset key field获取指定的field对应的值
      • hgetall key:获取所有的field和value
    • 删除:hdel key field
  • 列表类型list:可以添加一个元素到列表的头部(左边)或者尾部(右边)

    • 添加
      • lpush key value :将元素加入列表左边
      • rpush key value:将元素加入列表右边
    • 获取:lrange key start end:范围获取
    • 删除:
      • lpop key:删除列表最左边的元素,并将元素返回
      • rpop key:删除列表最右边的元素,并将元素返回
  • 集合类型set:不允许重复元素,不保证顺序

    • 存储:sadd key value
    • 获取:smembers key:获取set集合中所有元素
    • 删除:srem key value:删除set集合中的某个元素
  • 有序集合类型sortset:不允许重复元素,元素有序

    • 存储:zadd key score value:(score用来排序)
    • 获取:zrange key start end
    • 删除:zrem key value
  • 通用类型命令

    • keys * :查询所有的键
    • type key : 获取键对应的value的类型
    • del key : 删除指定的key value

应用场景

  • 缓存(数据查询,短链接,新闻内容,商品内容等等)
  • 聊天室的在线好友列表
  • 任务队列(秒杀,抢购,12306等等)
  • 应用排行榜
  • 网站访问统计
  • 数据过期处理(可以精确到毫秒)
  • 分布式集群架构中的session分离

持久化

  1. redis是一个内存数据库,当redis服务器重启,获取电脑重启,数据会丢失,我们可以将redis内存中的数据持久化保存到硬盘的文件中
  2. 持久化机制:
    1. RDB:默认方式,不需要进行配置,默认就使用这种机制
      • 在一定的时间间隔中,检测key的变化情况,然后持久化数据
    2. AOF:日志记录的方式,可以记录每一条命令的操作,可以每一次命令操作后,持久化数据

Jedis

一款java操作redis数据库的工具

1
2
3
4
5
6
7
8
9
10
11
//快速入门
//1.获取连接
Jedis jedis = new Jedis("localhost","6379");//可以为空构造,默认就是localhost,6379
//2.操作
jedis.set("username","zhangsan");
//3.关闭连接
jedis.close();


//特殊操作
jedis.setex(key,second,value);//第二个参数是存活时间,到时间自动删除该键值对

Jedis连接池

JedisPool使用

1
2
3
4
5
6
7
8
9
10
11
//0. (常用非必要)创建一个配置对象
JedisPoolConfig config = new JedisPoolConfig();
config.setXXXXX();
//1. 创建Jedis连接池对象
JedisPool jedisPool = new JedisPool(config,"localhost","6379");//可空构造
//2. 调用方法getResource()方法获取Jedis连接
Jedis jedis = jedisPool.getResource();
//3. 使用
jedis.set("hh","haha");
//4. 关闭 归还到连接池中
jedis.close();