• 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();
    }
    
  • 相关阅读:
    FZU.Software Engineering1816 ·The Second Assignment of the Team
    18软工实践-第五次作业-结对作业2
    福大软工1816 · 第四次作业
    软件工程实践第三次作业——结对作业(一)
    软工第二次作业——个人项目
    福大软工1816 · 团队现场编程实战(抽奖系统)
    Alpha 冲刺 (3/10)
    Alpha 冲刺 (2/10)
    Alpha 冲刺 (1/10)
    福大软工 · 第七次作业
  • 原文地址:https://www.cnblogs.com/fengxiaoqi/p/12886073.html
Copyright © 2020-2023  润新知