SQL笔记(4)-Redis数据库

  1. Redis:是一款高性能的NOSQL系列的非关系型数据库
1. 关系型数据库:
    * 数据之间有关联关系
    * 数据存储在表中(硬盘上)
2. 非关系数据库:
    * 数据与数据之间没有关联关系
    * 数据存储在内存中
3. 关系型数据库与非关系型数据库:
    * 一般会将数据存储在关系型数据库中,在非关系型数据库中进行备份
4. Redis:由C语音开发的一款开源的高性能键值对数据库,具有强大的高并发执行能力
    a. 目前Redis支持的键值数据类型:
        1. 字符串类型:String   --  java中的String类型
        2. 哈希类型:hash       --  java中的Map类型
        3. 列表类型:list       --  java中的LinkedList类型
        4. 集合类型:set        --  java中的HashSet类型
        5. 有序集合类型:sortedset  -- LinkedHashSet
    b. 应用场景
        1. 缓存(数据查询,短链接,新闻内容等)
        2. 聊天室的在线好友列表
        3. 任务队列。(秒杀,抢票等)
        4. 应用排行榜
        5. 网站访问统计
        6. 数据过期处理
        7. 分布式集群架构中的session分离
5. 使用:
    a. 下载压缩包
        https://redis.io
        http://www.redis.net.cn
    b. 解压即可使用:
        * redis.windows.conf:配置文件
        * redis-cli.exe:redis客户端
        * redis-server.exe:服务器端
  1. Redis命令
1. Redis数据结构:
    * key-value结构
    * key都是字符串类型
    * value可以为5中类型
2. 存储/获取数据:常用命令
    a. 字符串类型value1. 存储:key相同会发生覆盖
            set key value
        2. 获取:
            get key
        3. 删除:
            del key
    b. 哈希类型:
        1. 存储:
            hset key filed value
        2. 获取:
            hget key filed
            hgetall key     --  获取所有的键和值
        3. 删除:
            hdel key field
    c. 列表类型:
        1. 存储:
            lpush key value -- 在列表左边插入一个元素
            rpush key value -- 在列表右边插入一个元素
        2. 获取:
            lrange key start end -- 获取指定范围的元素,全部0开始-1结束
        3. 删除:
            lpop key -- 删除列表最左边的value,并返回该value
            rpop key -- 删除列表最右边的value,并返回该value
    d. 集合类型:
        1. 存储:
            sadd key value
        2. 获取:
            smembers key -- 获取集合中所有的value
            smembers key value -- 判定集合中是否存在该value
        3. 删除:
            srem key value
    e. 有序集合:每个元素关联一个double类型的分数,用于排序
        1. 存储:
            zadd key score value
        2. 获取:
            zrange key start end
        3. 删除:
            zrem key value
3. 通用命令:
    a. keys *
        -- 查询所有的键
    b. type key
        -- 查询指定键对应的value类型
    c. del key
        -- 删除指定key-value
  1. Redis持久化:
1. redis是一个内存数据库,当redis服务器关闭前,需要将内存中的数据持久化保存到硬盘中
2. redis持久化机制:
    a. RDB:默认方式,在一定时间内,检测key的变化情况,满足一定数量便持久化数据
        1. 修改redis.windows.conf文件:
            save 900 1      #15分钟内如果有至少1个key发生改变,便持久化一次
            save 300 10     #5分钟内如果有10个key发生改变,则持久化一次
            save 60 10000   #1分钟内如果有1万个key发送改变,则持久化一次
        2. 需要命令行启动并指定配置文件:
            cmd:> redis-server.exe redis.windows.conf
    b. AOF:日志记录方式,可以记录每一条命令的操作。每一次命令操作后,持久化数据
        1. 修改redis.windows.conf文件:
            appendonly yes   #默认为no表示关闭,修改为yes
        2. 配置持久化频率:
            appendfsync always      #每次操作都进行一次持久化
            appendfsync everysec    #每隔一秒进行一次持久化
            appendfsync no          # 不进行持久化,此时相当于一个大型map集合
        
  1. Jedis:java操作redis数据库的工具
1. 下载Jedis的相关jar包
    jedis-2.7.0.jar
    commons-pool2-2.3.jar
2. 使用步骤:
    a. 获取连接:
        Jedis jedis = new Jedis("主机IP","端口号");//空参构造默认为localhost和6379
    b. 操作:
        成员方法与redis数据库操作命令一致
        get/set/del
        hget/hset/hdel/hgetAll
        ...
    c. 关闭连接:
        jedis.close();
3. 常用特殊方法:
    a. setex(key, seconds, value)
        将key:value在数据库中存活seconds秒
4. Jedis连接池:
    a. 使用步骤:
        1. 创建JedisPool连接池
            JedisPool jedisPool = new JedisPool();  //空参表示使用默认配置
            * 使用JedisPoolConfig配置对象创建自定义配置的JedisPool连接池
                //创建一个配置对象
                JedisPoolConfig config = new JedisPoolConfig();
                //设置
                config.setMaxTotal(xxx);
                config.setMaxIdle(xxxx);
                ...
                //将配置对象作为参数传入
                JedisPool jedisPool = new JedisPool(config, host, port);
        2. 调用成员方法getResource()获取连接
            Jedis jedis = jedisPool.getResource();
        3. 调用close()归还连接
5. 使用redis缓存:
    a. 一些不经常改变的数据可以从关系型数据库查询后,备份在redis中
        * 但是,这些数据的增删改操作后(成员方法中),必须清空这些数据在redis的缓存
        * 这样,一旦没有缓存,就会重新查询数据库,并且备份缓存
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值