Redis

  1.         JAVA WEB中的redis应用

    1. 简介
      1.  概念:redis是一款高性能的NOSQL系列的非关系型的数据库
        1. NoSQ:L泛指非关系型的数据库“ :non-relational”,它们不保证关系数据的ACID特性(数据之间没有耦合)。
        2. 特点:易扩展、大数据量,高性能、具有非常高的读写性能、数据库的结构简单
        3. 类型:redis 、hbase
        4. 存储:key :value 并且存储在内存中(存储在内存中,读取速度更快)  (关系型数据库则是存储到硬盘中,IO存取、读取的效率相对较低)
        5. 使用:关系型与非关系型的数据联合使用
          1. 使用缓存的思想(将经常使用并且不太经常发生变化的数据存储在缓存中)
            1. 从缓存中获取数据
              1. 有数据:
                1. 直接从缓存中返回数据
              2. 没有数据
                1. 从数据库中查询相应的数据
                2. 将数据放入相应的缓存之中
                3. 返回数据
            2. 缓存的选择:针对于分布式的项目部署,针对于多台电脑,使用redis(非关系型数据库),可以部署独立、部署简单的机器。
        6. 缺点
          1. 维护工具有限
          2. 不支持对sql的支持,每个软件之间的用法不太一样,学习成本比较大
          3. 不支持非关系型数据对事物的处理(回滚)
        7. SQL与nosql数据库是互补的,将数据存储在SQL(关系型数据库),在nosql中备份存储关系型数据库的数据
        8. 类型:
          1. 键值对存储数据库(key-value)(redis)
          2. 列存储数据库
          3. 文档型数据库
          4. 图形数据库
        9. 应用场景:
          1. 缓存
          2. 聊天室好友列表
          3. 任务队列 (秒杀、抢购、)
          4. 应用商店排行榜
          5. 网站访问统计
          6. 数据过期处理
          7. 分布式集群
      2. redis的下载安装
        1. 官网:redis.io
        2. 解压可以直接使用
            1. 核心配置文件
            1. 客户端的执行文件
            1. 服务器端的执行文件
        3. 使用
          1. 直接双击执行文件既可以进行使用
          2. 使用:
            1. 命令的方式
              1. redis的数据结构
                1. 存储的数据是(key,value)格式的数据 

                  1. key都是字符串
                  2. value值有五种数据结构
                    1. 字符串:string 
                    2. 哈希类型:hash (map的格式)(又可以存储键值对(name:lisi)age,24)
                    3. 列表类型:list  (linkedlist)
                    4. 集合类型:set (hashSet)
                    5. 有序集合类型:sortedset (不允许重复元素)(会自动进行排序)
              2. 使用命令行进行相应的操作 
                1. 字符串string
                  1. 存储 :key value 
                  2. 获取:get key
                  3. 删除:del key
                  4. redis中文网中有着相应的教程
                2. 哈希类型(hash)
                  1. 存储:hset  key  field value
                  2. 获取: hget key  field(获取指定的值)
                    1. hgetall key (可以获取到键中对应的所有hash值)
                  3. 删除:hdel key field 
                3. 列表类型(list)可以添加一个元素到列表的头部或者尾部
                  1. 存储(添加)
                    1. lpush(左添加)lpush key value
                    2. rpush(右添加)rpush key value
                  2. 获取(获取头信息或者尾信息)
                    1. 获取指定的元素
                      1. lrange key start  end (范围获取)
                  3. 删除
                    1. lpop key (删除列表最左边的一个元素,并将元素进行返回)
                    2. rpop key (删除列表最右边的一个元素,并将元素值进行返回)
                4. 集合元素 set :不允许重复的元素(存入取出不保证顺序)
                  1. 存储:sadd key value
                  2. 获取:smemenbers key 
                  3. 删除 srem key value 
                5. 有序集合sortedset(排序有序)(操作也相对复杂一些)
                  1. 存储
                  2. 获取:(获取所有)
                  3. 删除:删除指定元素
                6. 通用操作
                  1. 查询所有的操作 :key*
                  2.  获取键对应的value的类型:type key
                  3. 删除指定的key value :del key
              3. 持久化
                1. 含义:redis是内存的数据库,(临时的),当redis服务器重启或者电脑重启,数据会丢失,因此将redis中的数据保存到硬盘中,称为数据的持久化保存
                2. 持久化机制
                  1. RDB:默认方式:不需要进行相应的配置,模式使用这种机制
                    1. 在一定的时间间隔中,检测key的变化情况
                  2. AOF:日志记录的方式,记录每一条命令的操作,可以每一次命令操作后,持久化操作
                    1. 对性能的影响较大
                  3. RDB设置方式
                    1. 在压缩文件中有配置文件,在配置文件中设置相应的属性
                    2. 在这段配置中编辑配置文件
                      1. save 900 1:在 15min内有一个key改变就保存一次
                      2. save 300 10:在5min中一次有10个key发送改变就保存一次
                      3. save 60 10000:在1分钟中有10000key发送改变就保存一次
                      4. 设置时间和数量是根据服务器的性能进行设置,一般不随便调整
                    3. 修改完配置文件以后,需要他们控制台重新启动相关的文件(server、window.conf )再启动相应的客户端
                    4. 当数据发送相应的改变,则会在相应的文件夹中生成一个dump.rdb的文件
                  4. AOF配置
                    1. 编辑配置文件 修改成yes(no 表示关闭aof持久化机制)
                    2. 修改下面的注释
                      1.  # appendfsync always:每一次操作都进行持久化
                      2. appendfsync everysec 每个一秒进行持久化
                      3. # appendfsync no 不进行持久化
                    3. 修改好相应的设置后,会生产一个aof的持久化文件,可以用于下次的使用
            2. 使用java客户端进行操作
              1. jedis:java操作数据库的工具,
              2. 使用步骤:下载jedis的使用jar
                1. 获取连接(new Jedis (主机名,端口))
                  1. 若使用空参构造,默认使用“localhost”为主机号、6379的端口值
                2. 操作 set、get等操作,与redis相同
                3. 关闭连接Jedis.close()
              3. jedis操作redis中的各种数据结构(value中有5种结构)
                1. 字符串
                  1. jedis存在setex方法,可以用来设置指定过期时间的key value
                  2. setex(activecode ,20,“hehe”)第一个表示启动激活,20表示20s的过期时间,hehe表示存入的内容。
                    1. 表示含义:存入hehe,20s后自动删除
                    2. 用途:用于存储有时效性的激活码(短信验证码)
                2. hash类型
                  1. 获取指定hget
                  2. 存储hset
                  3. 获取所有 hgetall(注意,使用该方法后得到的是对象的集合形式(map))使用keyset进行遍历
                3. list类型
                  1. 存储(左/右存储)lpush、rpush("key",value)(其中value的值可以存储多个)
                    1. 例如jedis.lpush(“mylist”,"a","b","c");
                  2. 获取lrange/rrange(左/右取出)
                4. set类型
                5. orderedset
              4. jedis的连接池(自带的)jedispoll
                1. 创建连接池对象
                  1. 创建对象时,可以通过引入相应的配置文件进行相应参数的设置(最大连接数、连接时间间隔等)
                  2. 为了解耦,可以使用priority配置文件配置连接池的参数,提供获取连接的方法
                2. 调用相应的方法(getResource()方法获取jedis的连接)
                3. 关闭(并非是关闭,而是将连接归还到连接池中,等待别人复有)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值