Redis的介绍及使用实例.
本文就来讲一下Redis安装的方法和Redis生成主键的优点以及和其他几种方式生成主键的对比.
1,Redis安装
首先将Redis的tar包拷贝到Linux下的根目录
然后解压到redis文件夹下:(先使用mkdir创建redis文件夹)
接下来就是解压tar包到redis目录下:
解压后的目录结构:
编译: 使用Make命令
安装:
安装好之后的目录: 
6379 下的目录结构:(这个rdb文件时: redis database, 暂时不用管它, 重启后自动生成的)
bin下的目录结构:
配置后台运行:(将redis-3.0.0目录下的redis.conf文件拷贝到6379目录下, 使用cp命令)
编辑redis.conf文件(使用vim 命令编辑,修改daemonize为yes, 意思就是支持后台运行)
启动redis服务:(启动及停止命令)
客服端连接服务器:(如果是远程连接: ./bin/redis-cli -h 192.168.200.128 -p 6379)
命令行演示:
这样一个redis就启动完成了.
2, 使用Redis生成主键的优点及与其他生成主键方式的对比
Redis生成ID
当使用数据库来生成ID性能不够要求的时候,我们可以尝试使用Redis来生成ID。这主要依赖于Redis是单线程的,所以也可以用生成全局唯一的ID。可以用Redis的原子操作 INCR和INCRBY来实现。
可以使用Redis集群来获取更高的吞吐量。假如一个集群中有5台Redis。可以初始化每台Redis的值分别是1,2,3,4,5,然后步长都是5。各个Redis生成的ID为:
A:1,6,11,16,21
B:2,7,12,17,22
C:3,8,13,18,23
D:4,9,14,19,24
E:5,10,15,20,25
这个,随便负载到哪个机确定好,未来很难做修改。但是3-5台服务器基本能够满足器上,都可以获得不同的ID。但是步长和初始值一定需要事先需要了。使用Redis集群也可以方式单点故障的问题。
另外,比较适合使用Redis来生成每天从0开始的流水号。比如订单号=日期+当日自增长号。可以每天在Redis中生成一个Key,使用INCR进行累加。
优点:
1)不依赖于数据库,灵活方便,且性能优于数据库。
2)数字ID天然排序,对分页或者需要排序的结果很有帮助。
缺点:
1)如果系统中没有Redis,还需要引入新的组件,增加系统复杂度。
2)需要编码和配置的工作量比较大。
用INT做主键的优点:
1、需要很小的数据存储空间,仅仅需要4 byte 。
2、insert和update操作时使用INT的性能比GUID好,所以使用int将会提高应用程序的性能。
3、index和Join 操作,int的性能最好。
4、容易记忆。
5、支持通过函数获取最新的值,如:Scope_Indentity() 。
使用INT做主键的缺点
1、如果经常有合并表的操作,就可能会出现主键重复的情况。
2、使用INT数据范围有限制。如果存在大量的数据,可能会超出INT的取值范围。
3、很难处理分布式存储的数据表。
使用GUID做主键的优点:
1、它是独一无二的。
2、出现重复的机会少。
3、适合大量数据中的插入和更新操作。
4、跨服务器数据合并非常方便。
使用GUID做主键的缺点:
1、存储空间大(16 byte),因此它将会占用更多的磁盘大小。
2、很难记忆。join操作性能比int要低。
3、没有内置的函数获取最新产生的guid主键。
4、GUID做主键将会添加到表上的所以其他索引中,因此会降低性能。
3. 代码中演示使用Redis
Java接口测试Redis:
Spring和Redis整合:
Service层:(ProductServiceIml.java)
@Autowired
private Jedis jedis;
public void insertProduct(Product product){
//商品设置
//ID自增长的方式不好, 在这里使用redis生成id
Long id = jedis.incr("pno");
product.setId(id);
//设置默认下架
product.setIsShow(false);
//默认不删除
product.setIsDel(false);
//时间
product.setCreateTime(new Date());
//保存商品, 在mapper.xml中写的是返回自增长的主键id, 然后进行级联保存sku表
//但是product如果已经设置了id 就不会再返回主键id了.
productDao.insertSelective(product);
//库存 多个
for (String color : product.getColors().split(",")) {
//尺码
for(String size : product.getSizes().split(",")){
Sku sku = new Sku();
//商品ID 这个在mapper.xml中设置返回主键id
sku.setProductId(product.getId());
//颜色
sku.setColorId(Long.parseLong(color));
//市场价
sku.setMarketPrice(0f);
//售价
sku.setPrice(0f);
//运费
sku.setDeliveFee(10f);
//购买限制
sku.setUpperLimit(188);
//尺码
sku.setSize(size);
//时间
sku.setCreateTime(new Date());
//库存
sku.setStock(0);
skuDao.insertSelective(sku);
}
}
}
看到这个最上面使用了Jdis去调用Redis服务, 然后使用incr对pno(在redis中可以对pno设置值)加1操作. 之前使用的都是自增长ID, 在mapper.xml中insert完成之后自动返回主键id到product中, 在级联保存的时候可以直接使用product.getId(). 下面就来看一下redis与spring整合的配置.

redis.xml配置文件:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:task="http://www.springframework.org/schema/task"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task-4.0.xsd
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd"> <!-- 整合Redis-->
<bean id="jdis" class="redis.clients.jedis.Jedis">
<constructor-arg value="192.168.200.128" index="0" type="java.lang.String"/>
<constructor-arg value="6379" index="1"/>
</bean> </beans>

关于Redis的使用暂时就这么多, 下次还会继续分享更多的内容.
Redis的介绍及使用实例.的更多相关文章
- Redis安装介绍
Redis安装介绍 一.Linux版本及配置 1. Linux版本:Red Hat Enterprise Linux 6虚拟机 2. 配置: 内存:1G:CPU:1核:硬盘:20G 二.Redis ...
- Redis全面介绍
最近重新认识了一下Redis,借着这个机会,也整理一篇算是比较详尽和全面的文章吧. 缓存 缓存就是数据交换的缓冲区(称作Cache)——摘自百度百科.无论是在计算机硬件体系结构还是软件体系结构中, ...
- NoSQL数据库之Redis数据库:Redis的介绍与安装部署
NoSQL(NoSQL = Not Only SQL),它指的是非关系型的数据库.随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的w ...
- 4 Redis 配置文件介绍
2016-12-22 14:28:39 该系列文章链接NoSQL 数据库简介Redis的安装及及一些杂项基础知识Redis 的常用五大数据类型(key,string,hash,list,set,zse ...
- redis cluster介绍
讲解分布式数据存储的核心算法,数据分布的算法 hash算法 -> 一致性hash算法(memcached) -> redis cluster,hash slot算法 一.概述 1.我们的m ...
- Python 基于python操纵redis入门介绍
基于python操纵redis入门介绍 by:授客 QQ:1033553122 测试环境 redis-3.0.7 CentOS 6.5-x86_64 python 3.3.2 基于Python操作R ...
- Redis(二):Redis入门介绍
Redis入门介绍目录导航: 入门概述 VMWare + VMTools千里之行始于足下 Redis的安装 Redis启动后杂项基础知识讲解 入门概述 是什么 Redis:REmote DIction ...
- Redis简单介绍
redis简单介绍 Redis VS key-value缓存产品 Redis支持数据的持久化,能够将内存中的数据保持在磁盘中,重新启动的时候能够再次载入进行使用. Redis不只支持简单的key-va ...
- Java XML解析工具 dom4j介绍及使用实例
Java XML解析工具 dom4j介绍及使用实例 dom4j介绍 dom4j的项目地址:http://sourceforge.net/projects/dom4j/?source=directory ...
随机推荐
- onselectstart和onselect的使用
1.onselectstart 这个事件主要是用于禁止选择网页中的文字.代码为: document.onselectstart =function(){ return false; } 另外ff/op ...
- BZOJ1261: [SCOI2006]zh_tree
Description 张老师根据自己工作的需要,设计了一种特殊的二叉搜索树.他把这种二叉树起名为zh_tree,对于具有n个结点的zh_tree,其中序遍历恰好为(1,2,3,-,n),其中数字1, ...
- input输入内容时放大问题
最近做的微信网站有一个关于input输入框页面放大的问题.比如登录页面刚打开时正常,但用户输入信息登录时,页面就会放大.解决这个问题,首先需要在头部加一个 <meta name="vi ...
- Struts2注解使用说明
Struts2注解 1 Struts2注解的作用 使用注解可以用来替换struts.xml配置文件!!! 2 导包 必须导入struts2-convention-plugin-2.3.15.jar包, ...
- 【Thinking in Java】类和对象的初始化过程
在Java中, 当一个类被调用的时候,它的初始化过程是怎么样的呢? 当一个类被实例化的时候,它的初始化过程又是怎样的呢? 为什么static方法不能未经对象就调用非static方法? 下面我们通过例子 ...
- ubuntu引导修复
很多人在自己电脑上装了双系统,我自己装了win7和ubuntu14.04,主要还是用win7,但是有时候win7系统崩溃掉时只能重装咯,重装后发现ubuntu的引导不见了,我也试过在windows下修 ...
- c# Invalidate() Update() Refresh()的区别
Control.Invalidate方法:使控件的特定区域无效并向控件发送绘制消息. 通常情况下,用Invalidate()使区域无效就可触发该控件的重画了,但在一些条件下却没有触发重画.例如: pr ...
- 第七章 内存管理单元MMU介绍
7.1 内存管理单元MMU介绍 7.1.1 S3C2410/S3C2440 MMU特性 负责虚拟地址到物理地址的映射,并提供硬件机制的内存访问权限检查 特性: 与ARM V4兼容的映射长度.域.访问权 ...
- jquery datepicker 只显示年月
首先修改默认日期赋值 <script type="text/javascript"> $(function(){ $('#searchDate').datepicker ...
- 修改mysql某一键为自增键
alter table tb_name modify id int auto_increment primary key