Redis学习

    xiaoxiao2021-04-18  278

    1. Redis简介

    1.1 NoSQL的定义

    学习Redis之前,我们先来了解一下NoSQL,相信大家基本上都有接触过MySQL,它是一种典型的关系型数据库,在我们实际应用过程中也是很频繁的。既然存在像MySQL这种类型的关系数据库,那么也就存在非关系数据库,没错,NoSQL就是非关系型的数据库,NoSQL即Not-Only SQL,它可以作为关系型数据库的一个良好的补充。在实际应用开发过程中,NoSQL是一种用来解决高并发、高可扩展、高可用、大数据存储问题而产生的数据库解决方案。了解更多请点击这里

    1.2 NoSQL数据的基本分类

    键值(Key-Value)存储数据库 相关产品: Tokyo Cabinet/Tyrant、Redis、Voldemort、Berkeley DB 典型应用: 内容缓存,主要用于处理大量数据的高访问负载。 数据模型: 一系列键值对 优势: 快速查询 劣势: 存储的数据缺少结构化列存储数据库 相关产品:Cassandra, HBase, Riak 典型应用:分布式的文件系统 数据模型:以列簇式存储,将同一列数据存在一起 优势:查找速度快,可扩展性强,更容易进行分布式扩展 劣势:功能相对局限文档型数据库 相关产品:CouchDB、MongoDB 典型应用:Web应用(与Key-Value类似,Value是结构化的) 数据模型: 一系列键值对 优势:数据结构要求不严格 劣势: 查询性能不高,而且缺乏统一的查询语法图形(Graph)数据库 相关数据库:Neo4J、InfoGrid、Infinite Graph 典型应用:社交网络 数据模型:图结构 优势:利用图结构相关算法。 劣势:需要对整个图做计算才能得出结果,不容易做分布式的集群方案。

    1.3 走进Redis

    Redis是一种用C语言开发的一个开源的高性能的键值对数据库,它通过提供多种键值数据类型来适应不同场景下的存储需求,目前为止Redis支持的键值数据类型包括字符串类型、散列类型、列表类型、集合类型、有序集合类型。了解更多请点击这里 应用常景

    缓存(数据查询、短连接、新闻内容、商品内容等等)。(最多使用)分布式集群架构中的session分离。聊天室的在线好友列表。任务队列。(秒杀、抢购、12306等等)应用排行榜。网站访问统计。数据过期处理(可以精确到毫秒)

    2. Redis的下载与安装

    Redis的官网网址链接:http://redis.io/ 下载地址链接:https://redis.io/download

    本文以在centos6.8的环境下安装Redis3.0.0进行讲解说明 在官网上下载redis-3.0.0.tar.gz安装包后,拷贝到Linux系统中,再使用# tar -zxf redis-3.0.0.tar.gz 解压到本地目录。由于Redis是由C语言开发的,在Linux系统运行需要先进行编译,编译redis源码的命令行 #cd redis-3.0.0(首先切换到redis-3.0.0源码文件夹,再进行编译) #make Redis的启动

    启动方式1(前端启动方式): 切换到redis的文件下的bin目录下 #cd usr/local/redis/bin(注:此路径为博主设置的路径,根据自己的实际情况调整) #./redis-server 启动方式2(后端启动方式): (1)需要首先将redis源码包中的配置文件redis.conf复制到/usr/local/redis/bin下; (2)使用vim指令修改刚复制的redis.conf文件,将其中的daemonize由no改为yes, #vim redis.conf (3)修改完成后,启动服务 #./redis-server redis.conf其他:使用Redis的客户端工具 下载链接: 链接:https://pan.baidu.com/s/1BZwPckLDAh8V8tf2f8S6dw 提取码:m3ja 至于安装过程基本上就是一路next了 安装成功后的界面如下: 这就是redis的客户端操作界面,使用方法也简单,和Navicat差不多。 首次使用客户端工具连接centos中的redis服务时,可能出现连接超时,或者是拒绝连接,处理方法可以参考博主的另一篇博客解决使用远程连接工具连接redis时,出现连接超时的方法

    3.使用java语言调用redis

    3.1认知jedis

    jedis是集成了redis的一些命令操作,封装了redis的java客户端。下面介绍在java中常见的使用方式。

    3.2jedis的使用

    单实例使用的代码实现 @Test public void test1(){ //连接到Linux的Redis的数据库 Jedis jedis = new Jedis("192.168.12.128", 6379); //选择要操作的数据库 jedis.select(3);//操作第二个数据库 //存数据[5种类型] jedis.set("welcome","欢迎来到智能系统优化实验室");//设置字符串 jedis.hset("user:1001","username","cc"); jedis.hset("user:1001","age","22"); jedis.hset("user:1001","gender","男"); jedis.lpush("FootballTeamNames","日本","韩国","英国"); jedis.sadd("NBA","勇士","骑士"); jedis.zadd("english:scoreboard",90,"zhangsan"); jedis.zadd("english:scoreboard",91,"lisi"); jedis.zadd("english:scoreboard",92,"wangwu"); //取数据 System.out.println(jedis.get("welcome")); //关闭连接 jedis.close(); } 通过连接池的使用方式 @Test public void testJedisPool() { //创建一连接池对象 JedisPool jedisPool = new JedisPool("192.168.12.128", 6379); //从连接池中获得连接 Jedis jedis = jedisPool.getResource(); jedis.select(1); String result = jedis.get("welcome"); System.out.println(result); //关闭连接 jedis.close(); //关闭连接池 jedisPool.close(); }

    最新回复(0)