Redis可以说是目前最火爆的NoSQL数据库!

过去几年,Memcached很盛行,现在有很多公司已将Memcached替换成了Redis。当然,很多人替换并不清楚为什么,只是感觉不想让主流抛弃,这也充分反映了目前Redis的强势。

Redis是基于内存的数据结构存储开源系统,采用C语言编写,运行效率极高。可作为内存数据库、缓存或消息代理中间件,前两种情况实际当中使用更多些。

Redis与Memcached一样,以<key,value>二元键值对的形式存储数据,但与Memcached最大的不同在于Redis支持更多的数据类型,包括String、Hash、List、Set、Sorted Set等。

Redis目前发展很快,当前版本是3,其官方网址是:http://redis.io/ 源码地址:https://github.com/antirez/redis

由于采用ANSI C编写,Redis官方支持POSIX类型系统如linux等,Windows环境下有第三方的移植程序,但一般只做开发调试用,真正部署还是运行在linux系统上,才能发挥其威力。

Redis的安装部署R

下面我们就在CentOS 6上进行安装部署,具体步骤如下:

1.wget http://download.redis.io/releases/redis-3.0.5.tar.gz

这是当前的最新版本,可以到官网下载页面查看最新版本或安装以前的版本。

2.tar xzf redis-3.0.5.tar.gz 解压后,cd redis-3.0.5 到Redis主目录

3.make 编译,注意可能会出现机器上缺少依赖包的提示,按提示安装依赖包,直到make成功。

4.make test 运行测试,一路显示ok通过(需要安装TCL依赖包,见提示)。

这时在src目录下会多出几个可执行程序,其中redis-server是服务主程序。我们运行redis-server --help看看有哪些参数:

5. ./src/redis-server & 后台启动Redis,会显示成功画面,但会有三个警告提示。redis的提示很详细,我们照着做修改即可。

echo 511 > /proc/sys/net/core/somaxconn

vim /etc/sysctl.conf 加入vm.overcommit_memory = 1

vim /etc/rc.local 加入 echo never > /sys/kernel/mm/transparent_hugepage/enabled

后两个重启生效。再次运行redis-server命令,只存在一个没有指定config文件使用缺省配置的警告。启动画面如下:

我们看到,服务已启动,监听的端口号是6379

6. ./src/redis-cli 运行提供的客户端程序,体验下简单操作命令。

redis所有支持命令在 http://redis.io/commands 上可以查到。

7. ./redis-cli shutdown 关闭redis服务。

8. make install 将redis命令安装到bin目录下,成为系统命令。

Redis配置参数

前面我们启动redis,没有指定配置文件,一般情况下,我们需要指定配置文件启动。在redis主目录下,有个redis.conf配置文件模板。cp redis.conf /etc 复制到etc目录下。

redis.conf文件里的配置参数有详细的解释说明,下面是几个常用参数:

daemonize 缺省是no, 一般使用改为yes,这样启动redis-server时自动是后台运行方式。

port 6379 指定端口号,可以调整自己需要的端口值。

tcp-backlog 511 这个值就是前面需要调整somaxconn值的原因,它涉及到TCP连接时accept queue队列的大小,是取它们的最小值。这个参数和redis高并发处理请求密切相关,根据实际运行情况调整。

bind 只接受来自某IP的请求,安全考虑,缺省不限制。

tcp-keepalive 60 主动检测客户端连接是否正常,官方建议是60s

loglevel notice 定义日志级别

logfile "" 定义日志文件位置

save 900 1 存储数据到硬盘策略,这条定义的是900s内如有1个key值发生变化,就执行save存数据快照到硬盘操作。

dbfilename dump.rdb 指定数据快照文件名

dir ./ 指定数据快照文件目录

调整好参数后,我们用redis-server /etc/redis.conf 命令启动即可。

Java程序访问Redis

Redis支持的客户端操作语言非常丰富,达到40多种。就Java来说,也有很多访问驱动实现,我们最常用的还是Jedis。

Jedis源码地址: https://github.com/xetorthio/jedis 活跃度很高,能够跟上Redis服务端发布的最新功能,而且使用简单,基本和Redis命令行语法相似。

下面我们就在spring工程下简单使用下Jedis:

1. pom.xml 中配置Jedis和单元测试jar包。

<dependency>

<groupId>redis.clients</groupId>

<artifactId>jedis</artifactId>

<version>2.7.2</version>

</dependency>

<dependency>

<groupId>junit</groupId>

<artifactId>junit</artifactId>

<version>4.10</version>

<scope>test</scope>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-test</artifactId>

<version>${spring.version}</version>

<scope>test</scope>

</dependency>

2. spring配置xml文件配置Jedis连接服务器相关参数。

<bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig">

<property name="maxTotal" value="4096"/>

<property name="maxIdle" value="200"/>

<property name="maxWaitMillis" value="3000"/>

<property name="testOnBorrow" value="true" />

<property name="testOnReturn" value="true" />

</bean>

<bean id="jedisPool" class="redis.clients.jedis.JedisPool">

<constructor-arg index="0" ref="poolConfig"/>

<constructor-arg index="1" value="127.0.0.1"/>

<constructor-arg index="2" value="6379" type="int"/>

</bean>

3. 编写测试代码:

@RunWith(SpringJUnit4ClassRunner.class)

@ContextConfiguration(locations = "classpath:spring-test.xml")

public class RedisTest extends AbstractJUnit4SpringContextTests {

@Autowired

private JedisPool jedisPool;

@Test

public void basicOpTest(){

Jedis jedis = jedisPool.getResource();

jedis.set("person.001.name", "frank");

jedis.set("person.001.city", "beijing");

String name = jedis.get("person.001.name");

String city = jedis.get("person.001.city");

assertEquals("frank",name);

assertEquals("beijing",city);

jedis.del("person.001.name");

Boolean result = jedis.exists("person.001.name");

assertEquals(false,result);

result = jedis.exists("person.001.city");

assertEquals(true,result);

jedis.close();

}

}

eclipse下JUnit Test运行单元测试通过!

读完本篇,你应该了解如下内容:

1.Redis是基于内存的数据存储系统,数据以<key,value>形式存储。value支持多种数据类型,包括String、Hash、List、Set、Sorted Set等。

2.Redis采用C语言开发,安装运行在linux等POSIX系统上,windows系统上有第三方移植,可做开发测试。

3.Java常用的Redis客户端编程驱动是Jedis。

本文摘自微信号:Java架构师

转载于:https://www.cnblogs.com/jelynn/p/5192236.html

20分钟快速了解Redis相关推荐

  1. ESP8266 Non-OS SDK 开发之旅 基础篇① 初识 Non-OS SDK,史上超级详细手把手教小白20分钟快速搭建SDK软件开发环境,完成第一个例子Hello World!

    文章目录 1.前言 2. SDK概述 2.1 SDK使用流程 2.2 ESP8266 HDK -- 硬件开发工具 2.3 ESP8266 SDK -- 软件开发工具包 2.3.1 Non-OS SDK ...

  2. 20分钟快速入门Nginx

    文章目录 学习目标 学习内容 一.Nginx简介 1.什么是Nginx? 2.场景需求(转载) Nginx作用 二.正向代理和反向代理 1.正向代理 2.反向代理 三.负载均衡理解 四.Nginx安装 ...

  3. cubase怎么添加midi设备_Cubase教程丨20分钟快速上手Cubase(下)

    插入乐器轨 在cubase中,乐器轨是我们最常用的轨道之一.我们可以在创建轨道区,点击左键,选择"添加乐器轨". 在箭头所指的方向,可以选择相应的vst乐器.没有安装音色的同学,也 ...

  4. 一篇快速入门各程序员都在使用的Typora的基础教程(20分钟快速掌握)

    Typora的使用(基础篇) 一.Typora的介绍 1.1 简介 Typora是一款轻便简洁的Markdown编辑器,即在Typora编写时使用Markdown语言.Typora支持即时渲染技术,这 ...

  5. 零基础也会建网站,20分钟快速利用宝塔和WordPress搭建个人网站

    利用宝塔面板和WordPress搭建个人网站 购买服务器 安装宝塔面板 安装WordPress 配置WordPress 一. 购买轻量应用服务器 轻量应用服务器(Light server)是一种内置应 ...

  6. Javascript 20分钟快速入门

    简介: JavaScript是目前web开发中不可缺少的脚本语言,js是解释性语言,不需要编译即可运行,运行在客户端,需要通过浏览器来解析执行JavaScript代码. 诞生于1995年,当时的主要目 ...

  7. MarkDown 的基本语法和快捷键,20分钟快速学会

    1: 代码块高亮 ```java ``` 2: <font face="黑体">我是黑体字</font> <font face="微软雅黑& ...

  8. 如何用20分钟就能获得同款企业级全链路灰度能力?

    简介:MSE 微服务引擎将推出服务治理专业版,提供开箱即用且完整专业的微服务治理解决方案,帮助企业更好地实现微服务治理能力.如果您的系统也可以像本文描述的那样,快速具备完整的全链路灰度能力,并基于该能 ...

  9. 深入理解 Redis Template及4种序列化方式__spring boot整合redis实现RedisTemplate三分钟快速入门

    概述 使用Spring 提供的 Spring Data Redis 操作redis 必然要使用Spring提供的模板类 RedisTemplate, 今天我们好好的看看这个模板类 . RedisTem ...

最新文章

  1. js事件(Event)知识整理
  2. linux mysql互为主从_mysql互为主从配置(双主模型)
  3. 《Ext JS 高级程序设计》的目录与样张
  4. Intel Sandy Bridge/Ivy Bridge架构/微架构/流水线 (8) - 流水线前端/分支预测
  5. 小程序Canvas原有接口不再维护
  6. Memcached 1.4.22安装和配置
  7. 钱盾率先提出的“全流程屏障”究竟是怎样的一种能力?
  8. 协程(Python)
  9. 电感式传感器工作原理与电感式传感器应用案例-博扬智能
  10. gradle下载慢的问题
  11. 设计模式六大原则(3):里氏替换原则
  12. RFC 文档中文目录
  13. linux-CentOS-rpm、yum、源码安装
  14. 京东技术体系员工级别划分及薪资区间
  15. gdiPlus的imag::fromFile函数调用返回为空
  16. 黄灯闪烁c语言程序,交通灯控制程序 需要加一个黄灯闪烁三次 求求大神
  17. 深入浅出理解数据分析系列之:Python安装Excel文档库openpyxl和Pycharm为项目安装Excel文档库openpyxl
  18. vue中,input输入框只允许输入数字
  19. 准确测试身高的软件,情侣身高对比软件-身高模拟对比软件预约 v1.0最新版_5577安卓网...
  20. Matlab使用中遇到的一些脑残问题。

热门文章

  1. 【牛客 - 370B】Rinne Loves Graph(分层图最短路 或 最短路dp)
  2. 【牛客 - 301哈尔滨理工大学软件与微电子学院第八届程序设计竞赛同步赛(高年级)】小乐乐的组合数+(取模,数学,思维)
  3. matlab中均线交易策略,【每日一策】Matlab量化交易策略之 均线选股策略
  4. wp config.php mysql_WordPress手动配置wp-config.php文件
  5. java数组及Arrays创建一个int 类型数组 数组元素由键盘录入,每次打印插入排序的结果(数组扩容,数组排序,键盘录入)
  6. java mysql 事物_java基础之MySQL事务和视图
  7. org.apache.commons.fileupload.FileUploadBase$SizeLimitExceededException:
  8. 倒果汁c语言,水果榨汁补维生素C?这些补维生素的错误别再犯了
  9. (十三)nodejs循序渐进-高性能游戏服务器框架pomelo之扩展聊天服务器为机器人自动聊天
  10. 算法(11)-leetcode-explore-learn-数据结构-链表的经典问题