浅析Redis(Jedis)

来源:互联网 发布:淘宝高仿警官证制作 编辑:程序博客网 时间:2024/06/05 09:29

NoSQL概述

not only SQL 泛指非关系型数据库

  • 有效解决高并发读写问题
  • 解决海量数据的高效率存储和访问
  • 高扩展性和高可用性

NoSQL四大分类

  • 键值对存储

    可快速查询数据,但数据结构性较差

  • 列存储

    查找速度快,扩展性强,但使用较为局限

  • 文档数据库

    数据结构要求不是很严格,查询效率较低,缺少统一语法

  • 图形数据库

    利用图结构算法,需要对图计算才能得出结果,不容易做分布式处理

NoSQL特点

  • 易扩展
  • 灵活的数据模型
  • 大量数据高性能存储
  • 高可用

Redis概述

高性能键值对数据库

支持的数据类型

  • String类型
  • List类型
  • Hash类型
  • Set类型
  • SortedSet类型

Jedis

Jedis是Redis官方推荐的Java客户端开发包

Jedis基本操作

import org.junit.Test;import redis.clients.jedis.Jedis;import redis.clients.jedis.JedisPool;import redis.clients.jedis.JedisPoolConfig;public class JedisDemo1 {    // 单实例测试    @Test    public void Single() {        // 设置IP地址和窗口号        Jedis jedis = new Jedis("127.0.0.1", 6379);        // 保存数据        jedis.set("name", "test");        // 获取数据        String value = jedis.get("name");        System.out.println(value);        // 释放资源        jedis.close();    }    // 连接池方式连接    @Test    public void pool() {        // 获得连接池配置对象        JedisPoolConfig config = new JedisPoolConfig();        // 设置最大连接数        config.setMaxTotal(30);        // 设置最大空闲数        config.setMaxIdle(15);        // 获得连接池        JedisPool jedisPool = new JedisPool(config, "127.0.0.1", 6379);        // 获得核心对象        Jedis jedis = null;        try {            // 通过连接池获得连接            jedis = jedisPool.getResource();            // 设置数据            jedis.set("name", "test");            // 获取数据            String value = jedis.get("name");            System.out.println(value);        } catch (Exception e) {            e.printStackTrace();        } finally {            if (jedis != null) {                // 释放资源                jedis.close();            }            if (jedisPool != null) {                jedisPool.close();            }        }    }}

Redis数据结构

key注意点

  • 不要过长(不超过1024字节,会消耗内存并降低查找速度)
  • 不要过短(降低可读性)

String存储

  • 二进制安全,存入和获取数据相同
  • value最多可以容纳的数据是512M

String常用命令

  • 赋值
  • 取值
  • 删除
  • 扩展
  • 数值增减

这里写图片描述

存储Hash

  • String key 和 String value 的map容器
  • 每一个Hash可以存储大量的键值对

常用操作

  • 赋值
  • 取值
  • 删除
  • 自学命令
  • 增加数字

这里写图片描述

存储List

  • 双向链表增加数据
  • 双向链表减少数据
  • ArrayList使用数组方式
  • LinkList使用双向链接方式

常用命令

  • 两端添加
  • 查看列表
  • 两端弹出
  • 获取列表元素个数
  • 扩展命令

Redis

  • 多数据库
  • Redis事务

Redis持久化

两种持久化方式

  • RDB

    默认支持,不需要配置,在指定的间隔内将内存中数据会写到硬盘中

  • AOF

    以日志的形式进行记录,服务器启动过程中读取日志进行数据还原

  • 不持久化

    仅将Redis当作缓存

RDB

  • 优势

    仅产生一个文件便于管理和灾难恢复以及实现性能最大化

  • 劣势

    按时回写到磁盘,无法避免数据丢失

AOF

  • 优势

    带来更高的数据安全性/数据一致性问题有良好的解决工具/如果日志过大,redis可以自动启动重写机制

  • 劣势

    文件较大/运行效率低/需要进行相应的配置

Redis修改策略

  • 每秒同步
  • 每修改同步
  • 不同步
原创粉丝点击