redis学习笔记

概念

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

  • 关系型数据库:数据存储在表中,表和表之间有一对多、多对一等一系列关系,表和表之间的属性也有一定的关系;并且数据存储在硬盘上。

  • 非关系型数据库(NOSQL):存储键值对或列等类型,数据之间没有任何关系;数据存储在内存中。

客户端向服务器发生一些请求时,服务器操作关系型数据库是非常耗时的。如果经常查询一些不经常发生改变的数据时,引入缓存思想提高效率。

  • 客户端请求一条数据时
    • 从缓存中获取数据
      1. 缓存中有数据:直接返回
      2. 缓存中没有数据:
        1. 从数据库中查询
        2. 将数据放入缓存
        3. 返回数据

关系型数据库与NOSQL数据库是互补的,一般会将数据存储在关系型数据库中,在NOSQL数据库中备份关系型数据库中的数据

主流的NOSQL产品功能

  • 键值存储数据库
  • 列存储数据库
  • 文档型数据库
  • 图形数据库

redis是键值存储数据库

redis的应用场景

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

redis支持的键值数据类型

  • 字符串 String
  • 哈希类型 hash
  • 列表类型 list
  • 集合类型 set
  • 有序集合类型 sortedset

下载安装

Windows 64位 3.0.504 下载

链接:https://pan.baidu.com/s/1s4eNA7d_vaIyJnUlt06pHA
提取码:o2al

解压直接使用

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

简单使用

命令操作

redis的数据结构

redis存储的是 key:value 格式的数据,其中key都是字符串,value有5种不同的类型

  • 字符串 String
  • 哈希类型 hash :map格式
  • 列表类型 list :linkedlist格式
  • 集合类型 set
  • 有序集合类型 sortedset

常用命令

字符串类型

存储:set key value
获取:get key
删除:del key

哈希类型

存储:hset key field value
获取:hget key field
	 hsetall key
删除:hdel key field

列表类型

存储:lpush key value  	 将元素加入列表左边
	 rpush key value 	   将元素加入列表右边
获取:lrange key start end  范围获取,0 -1 表示所有
删除:lpop key       	     删除列表最左边的元素,并将元素返回
	 rpop key 		       删除列表最右边的元素,并将元素返回

集合类型

set不允许重复,是无序的

存储:sadd key value 	 可以一次添加多个value
获取:smembers key   	 获取set集合中的所有元素
删除:srem key value 	 删除set集合中的某个元素

有序集合类型

不允许重复,有序的

存储:zadd key score value
获取:zrange key start end
删除:zrem key value

通用命令

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

持久化

redis是一个内存数据库,内存中的数据是临时的,当redis服务器重启,或者电脑重启时,数据会丢失。可以将redis内存中的数据持久化到硬盘的文件中。

redis持久化机制

1.RDB

默认方式,不需要进行配置。

  1. 编辑redis.windows.conf文件

    #   after 900 sec (15 min) if at least 1 key changed  
    #	15分钟最少有一个key被改变,持久化一次
    #   after 300 sec (5 min) if at least 10 keys changed
    #	5分钟内最少有一次10个key发生改变,持久化一次
    #   after 60 sec if at least 10000 keys changed
    #	1分钟内有10000个key改变,持久化一次
    
    save 900 1
    save 300 10
    save 60 10000
    
  2. 重启redis服务器,并指定配置文件

    在redis目录下打开cmd窗口,输入redis-server.exe redis.windows.conf

  3. 在当前目录下生成数据文件

    当执行持久化操作时,会在当前目录下生成一个 .rdb 格式的文件。

    以后再重启服务器之后,就可以读取到之前的数据。

2.AOF

默认关闭

  1. 编辑配置文件

    appendonly no --> appendonly yes(开启AOF)

    # appendfsync always	每一次操作都进行持久化
    appendfsync everysec	每隔一秒进行一次持久化
    # appendfsync no		不进行持久化
    

    第一条与第三条默认注释掉了

  2. 重启服务器

    在redis目录下打开cmd窗口,输入redis-server.exe redis.windows.conf

  3. 在当前目录下生成数据文件

    会根据配置文件的中的方式生成 .aof 格式的文件(隔一秒生成、操作一次生成)

java客户端 Jedis

相关jar包

链接:https://pan.baidu.com/s/1qB5JCSYc5zbs2URxs3nDgA
提取码:bd7z

Jedis:是java操作redis数据库的工具

  • 使用步骤

    1. 添加相关jar包

    2. 使用

/**
 * 快速入门使用Jedis
 */
@Test
public void Test1(){
    //1.获取链接
    Jedis jedis = new Jedis("localhost",6379);

    //2.操作
    jedis.set("username","zhangsan");//除了set,可以用其它的命令方法

    //3.关闭连接
    jedis.close();
}

连接池

使用步骤

  1. 创建JedisPool连接池对象
  2. 调用getResource()方法,获取Jedis连接
public void Test1(){
    //1.创建一个配置对象
    JedisPoolConfig config = new JedisPoolConfig();
    config.setMaxTotal(50);//设置最大允许连接数,也可以进行其他配置

    //2.创建Jedis连接池对象
    JedisPool jedisPool = new JedisPool(config,"localhost",6379);

    //3.获取连接
    Jedis jedis = jedisPool.getResource();

    //4.使用
    jedis.set("name","ww");

    //5.关闭,归还到连接池中
    jedis.close();
}
原文地址:https://www.cnblogs.com/fengxiaoqi/p/12886073.html