Redis 基础

本质:redis 是一款高性能的 NOSQL 系列的非关系型数据库

什么是Redis

Redis 是用C语言开发的一个开源的高性能键值对(key-value)数据库,官方提供测试数据,50个并发执行100000个请求,读的宿舍是110000次/s,写的速度是81000次/s,且Redis通过提供多种键值数据类型来适应不同场景下的存储需求,目前为止Redis支持的键值数据类型如下:

  1. 字符串类型 String
  2. 哈希类型 hash
  3. 列表类型 list
  4. 集合类型 set
  5. 有序集合类型 sortedset

redis的应用场景:

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

下载安装

官网: https://redis.io

中文网:http://www.redis.net.cn/

下载后解压直接可以使用:

- redis.window.conf:配置文件
- redis-cli.exe:redis的客户端
- redis-server.exe:redis服务器端

命令操作

  • redis 存储的是:key,value格式的数据结构,其中key都是字符串,value有5种不同的数据结构:
    • 字符串类型 String
    • 哈希类型 hash : map 格式
    • 列表类型 list : linkedlist 格式
    • 集合类型 set
    • 有序集合类型 sortedset
  • 字符串类型 string
    • 存储 set key value
    • 获取 get key
    • 删除 del key
  • 哈希类型 hash
    • 存储 hset key field value
    • 获取 单个值:hget key field,所有值:hgetall key
    • 删除 hdel key fild
  • 列表类型 list:可以添加一个元素到列表的头部(左边)或者尾部(右边)

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

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

    • 存储 zadd key score value
    • 获取 zrange key start end
    • 删除 zren key value

持久化

redis 是一个内存数据库,当redis服务器重启,获取电脑重启,数据会丢失,我们可以将 redis 内存种的数据持久化保存到硬盘文件种。

redis 持久化机制:

  1. RDB:默认方式,不需要配置,默认使用这种机制。在一定的时间间隔种,检测key的变化情况,然后持久化数据
    1. 编辑redis.windows.conf文件:
      • save 900 1,after 900 sec (15 min) if at least 1 key changed
      • save 300 10,after 300 sec (5 min) if at least 10 keys changed
      • save 60 10000 sec if at least 10000 keys changed
    2. 重新启动redis服务器,并指定配置文件名称
      • redis-server.exe redis.windows.conf
  2. AOF:日志记录的方式,可以记录每一条命令的操作。可以每一次命令操作后,持久化数据
    1. 编辑 redis.windows.confi 文件
      • appendonly no (关闭 aof) –> appendonly yes 开启aof)
      • appendfsync always: 每一次操作都进行持久化
      • appendfsync eversec: 每隔一秒进行一次持久化
      • appendfsync no: 不进行持久化

Java 客户端 Jedis

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

使用步骤:

  1. 下载 jedis 的 jar 包
  2. 使用:
    1. 获取连接: Jedis jedis = new Jedis(“localhost”,6379);
    2. 操作: jedis.set(“username”,”zhangsan”);
    3. 关闭连接: jedis.close();

Jedis 操作各种 redis 中的数据结构,Jedis 中的方法和 redis 中的命令一致

  • 字符串类型 String: set,get
  • 哈希类型 hash : map 格式:hset,hget
  • 列表类型 list : linkedlist 格式: lpush/rpush,lpop,rpop
  • 集合类型 set : sadd,srem
  • 有序集合类型 sortedset : zadd

Jedis 连接池

使用方式:

1
2
3
4
5
6
7
8
9
10
11
12
13
// 0. 创建一个配置对象
JedisPoolConfig config = JedisPoolConfig();
config.setMaxTotal(50); // 设置对打允许连接数
config.setMaxIdle(10); // 最大空闲连接

// 1. 创建Jedis连接池对象
JedisPool jedisPool = new JedisPool(config,"localhost",6379);
// 2. 获取连接
Jedis jedis = jedisPool.getResource();
// 3. 使用
jedis.set("hehe","haha");
// 4.关闭,归还到连接池中
jedis.close();