浅析Redis(Jedis)

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修改策略

  • 每秒同步
  • 每修改同步
  • 不同步
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值