Redis学习-redis概述
最近刚刚接触了redis技术,对此有一些了解,这是简单做一点总结。
Redis简介
首先,简单了解一下NoSQL(Not only sql),不要错误的理解为:没有SQL,而是不仅仅是SQL。NoSQL工具也是一种简易的数据库,它主要是基于内存的数据库,并提供一定的持久化功能。现在有很多这种技术如:memcachedb,redis,MongoDB等等。
Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。
Redis的性能十分优越,可以支持每秒十几万的读/写操作,其性能超数据库,并且支持集群、分布式、主从同步等配置,还支持一定事务能力。
Redis 与其他 key - value 缓存产品有以下三个特点:
- Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
- Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
- Redis支持数据的备份,即master-slave模式的数据备份。
redis的性能优越主要来自3个方面:
- 基于ANSI C语言编写的,接近于汇编语言的机器语言,运行十分快速。
- 基于内存的读/写,速度自然比数据库的磁盘读/写要快。
- 它的数据结构只有6种数据类型,数据结构比较简单,因此规则较少,而数据库则是范式,完整性、规范性需要考虑的规则较多,处理业务会比较复杂。
Redis在javaweb中的应用
一般,在javaweb中应用redis存在两个场景,一个是缓存常用的数据;另一个是在需要高速读/写的场合使用它快速读/写,比如一些需要进行商品抢购和抢红包的场合。
在使用Redis存储的时候,需要从3个方面进行考虑:
- 业务数据常用吗?命中率如何?如果命中率低,就没有必要写入缓存。
- 该业务数据是读操作多还是写操作多,如果写操作多,频繁需要写入数据库,也没有必要使用缓存。
- 业务数据大小如何?如果要存储几百兆字节的文件,会给缓存带来很大的压力,有没有必要?
考虑这些问题后,如需要缓存,就可以使用了。
Redis的安装和使用
我的电脑是windows系统的,所以主要以此为主,其它系统的安装就没有介绍。
下载地址:redis
也可以到Redis的官网下载。
下载下来是一个压缩包,解压后的目录如下:

方便启动在目录下新建一个startup.cmd,用编辑工具打开,写入以下内容:redis-server redis.windows.conf
就是通过命令来读取redis-window.conf的内容,用来启动redis,双击启动,出现下图就说明启动成功了。

在文件夹下还有一个redis-cli.exe,它一个Redis自带的客户端工具,可以连接到redis服务器,如图:

这样就安装好了redis。
安装好了,我们通过代码来测试一下redis的性能,要想使用redis,需要下载jedis.jar包。
下面是测试代码:(代码来自书上例子)
package com.mz.redis;
import redis.clients.jedis.Jedis;
/**
* @Package com.mz.redis
* @Description: redis测试
* @auther MZ
* @create 2017/10/10 22:14
*/
public class RedisTest {
public static void main(String[] args) {
Jedis jedis = new Jedis("localhost",6379);
int i = 0;
try {
long start = System.currentTimeMillis();
while (true) {
long end = System.currentTimeMillis();
if (end - start >= 1000) {
break;
}
i++;
jedis.set("test" + i, i + "");
}
} finally {
jedis.close();
}
System.out.println("redis每秒操作:"+i+"次");
}
}
结果如图:

书上作者的性能可以达到2万多次,而我的只有几千次,每次运行结果都不一样。可以是我的电脑太老了,没能体现redis真正的性能。
Redis学习-redis概述的更多相关文章
- Redis学习——Redis持久化之AOF备份方式保存数据
新技术的出现一定是在老技术的基础之上,并且完善了老技术的某一些不足的地方,新技术和老技术就如同JAVA中的继承关系.子类(新技术)比父类(老技术)更加的强大! 在前面介绍了Redis学习--Redis ...
- Redis学习---Redis操作之Python连接
PyCharm下的Redis连接 连接方式: 1. 操作模式 redis-py提供两个类Redis和StrictRedis用于实现Redis的命令,StrictRedis用于实现大部分官方的命令,并使 ...
- Redis学习——Redis事务
Redis和传统的关系型数据库一样,因为具有持久化的功能,所以也有事务的功能! 有关事务相关的概念和介绍,这里就不做介绍. 在学习Redis的事务之前,首先抛出一个面试的问题. 面试官:请问Redis ...
- Redis学习——Redis持久化之RDB备份方式保存数据
从这一个介绍里面知道,redis比memcache作为缓存数据库强大的地方,一个是支持的数据类型比较多,另一个就是redis持久化功能. 下面就介绍Redis的持久化之RDB! 一:什么是redis的 ...
- [转]Redis学习---Redis高可用技术解决方案总结
[原文]https://www.toutiao.com/i6591646189714670093/ 本文主要针对Redis常见的几种使用方式及其优缺点展开分析. 一.常见使用方式 Redis的几种常见 ...
- Redis学习——redis.conf 配置文件介绍
学以致用 学在用前 参看文章: redis.conf 配置详解 Redis配置文件详解(redis.conf)-云栖社区 在Redis的使用过程,除了知道对Redis五种数据类型的操作方法之外,最主要 ...
- redis学习——redis应用场景
毫无疑问,Redis开创了一种新的数据存储思路,使用Redis,我们不用在面对功能单调的数据库时,把精力放在如何把大象放进冰箱这样的问题上,而是利用Redis灵活多变的数据结构和数据操作,为不同的大象 ...
- Redis学习--Redis数据类型
Redis的5种基本类型 1.String 2.Hash 3.List 4.Set 5.Sorted Set String常见用法 1.get key 返回value 2.set key value ...
- Redis学习--Redis的安装与Jedis的简单使用
Redis安装 关于软件安装,之前是通过记录视频,前段时间发现可以直接阅读官网进行安装,这步省略 启动:前端启动直接启动src目录下redis-server,后端启动修改redis.conf中daem ...
- Redis学习---Redis的免密操作
Redis的免密操作 问题解决[方式一]:当前这种linux配置redis密码的方法是一种临时的,如果redis重启之后密码就会失效 1.首先进入redis,如果没有开启redis则需要先开启: [r ...
随机推荐
- HDU.1556 Color the ball (线段树 区间更新 单点查询)
HDU.1556 Color the ball (线段树 区间更新 单点查询) 题意分析 注意一下pushdown 和 pushup 模板类的题还真不能自己套啊,手写一遍才行 代码总览 #includ ...
- 【learning】矩阵树定理
问题描述 给你一个图(有向无向都ok),求这个图的生成树个数 一些概念 度数矩阵:\(a[i][i]=degree[i]\),其他等于\(0\) 入度矩阵:\(a[i][i]=in\_degree[i ...
- PHP 多线程采集
function curl_multi($urls) { if (!is_array($urls) or count($urls) == 0) { return false; } $num=count ...
- 基于 Quartz.NET 实现可中断的任务
基于 Quartz.NET 实现可中断的任务 Quartz.NET 是一个开源的作业调度框架,非常适合在平时的工作中,定时轮询数据库同步,定时邮件通知,定时处理数据等. Quartz.NET 允许开发 ...
- js中字符串全部替换
废话不多说,直接发结果 在js中字符串全部替换可以用以下方法: str.replace(/需要替换的字符串/g,"新字符串") 比如: "yyyy-MM-dd-hh-mm ...
- 5种网络通信设计模型(也称IO模型)
1.基本概念 同步:同步函数一般指调用函数后,等到函数功能实现再返回,期间一直霸占的CPU,等待期间同一个线程无法执行其他函数 异步:异步函数指调用函数后,不管函数功能是否实现,立马返回:通过回调函数 ...
- js 生成二维码
$(".good_info").on('click',function () { var id = $(this).data('id'); var string = 'http:/ ...
- width: calc(100% - 20px);
width: calc(100% - 20px); css3 的 calc()函数.这里的意思是设置宽度比100%的宽度少20px. calc()函数用于动态计算长度值. calc()函数支持 &qu ...
- Python基础之面向对象(初级篇)
概述 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发“更快更好更强...” 面向过程编程最易被初学 ...
- python 删除文件/夹
原文 : http://www.cnblogs.com/SophiaTang/archive/2012/01/16/2323467.html import os 删除文件: os.remove() 删 ...