Redis介绍、安装、客户端

本文介绍了Redis,一种高性能的键值数据库,属于NoSql中的键值存储数据库。文章详细讲解了Redis的五大数据类型,以及其在缓存、分布式session、好友列表等场景的应用。同时,提供了Redis在Linux上的安装步骤,包括前端和后端启动方式。最后,讨论了Redis的命令行客户端和图形界面客户端,以及Java的Jedis客户端使用。
摘要由CSDN通过智能技术生成

1. Redis介绍
  1.1 什么是NoSql
  为了解决高并发、高可用、高可扩展,大数据存储等一系列问题而产生的数据库解决方案,就是NoSql。NoSql,叫非关系型数据库,它的全名Not only sql。它不能替代关系型数据库,只能作为关系型数据库的一个良好补充。
  1.2 NoSql的分类
  1. 键值(Key-Value)存储数据库
  相关产品: Tokyo Cabinet/Tyrant、Redis、Voldemort、Berkeley DB
  典型应用: 内容缓存,主要用于处理大量数据的高访问负载。
  数据模型: 一系列键值对
  优势: 快速查询
  劣势: 存储的数据缺少结构化
  2. 列存储数据库
  相关产品:Cassandra, HBase, Riak
  典型应用:分布式的文件系统
  数据模型:以列簇式存储,将同一列数据存在一起
  优势:查找速度快,可扩展性强,更容易进行分布式扩展
  劣势:功能相对局限
  3. 文档型数据库
  相关产品:CouchDB、MongoDB
  典型应用:Web应用(与Key-Value类似,Value是结构化的)
  数据模型: 一系列键值对
  优势:数据结构要求不严格
  劣势:查询性能不高,而且缺乏统一的查询语法
  4. 图形(Graph)数据库
  相关数据库:Neo4J、InfoGrid、Infinite Graph
  典型应用:社交网络
  数据模型:图结构
  优势:利用图结构相关算法。
  劣势:需要对整个图做计算才能得出结果,不容易做分布式的集群方案。

  1.3 什么是Redis
  Redis是使用c语言开发的一个高性能键值(k/v)数据库。Redis可以通过一些键值类型来存储数据。Value的数据类型有:
  String字符类型
  map散列类型
  list列表类型
  set集合类型
  sortedset有序集合类型

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

2. Redis安装
  2.1 Redis下载
  官网地址:http://redis.io/
  下载地址:http://download.redis.io/releases/redis-3.0.0.tar.gz

  2.2 Redis安装
  redis安装到linux系统中。
  第一步:安装虚拟机软件,并在虚拟机上创建一台安装Linux操作系统的机器。
  第二步:将redis的压缩包,上传到linux系统。
  第三步:对redis的压缩包进行解压缩。Redis解压缩之后的文件是用c语言写的源码文件。
  root@zhaojd:/usr/local/redis# tar -zxf redis-3.0.0.tar.gz
  第四步:安装c语言环境(安装linux操作系统之后,自带c语言环境,所以这一步可省略)
  [root@zhaojd ~]# yum install gcc-c++
  第五步:编译redis源码
  root@zhaojd:/usr/local/redis/bin# cd redis-3.0.0
  root@zhaojd:/usr/local/redis/bin# make
  第六步:安装redis(PREFIX指定安装目录)
  root@zhaojd:/usr/local/redis/bin# make install PREFIX=/usr/local/redis
  第七步:查看是否安装成功
  该目录 /usr/local/redis 下有bin 目录即说明redis已经安装。

  2.2 Redis服务的启动
   2.2.1 前端启动
  前端启动的命令:

root@zhaojd:/usr/local/redis/bin# ./redis-server 

  前端启动的关闭:

强制关闭:Ctrl + C
正常关闭:root@zhaojd:/usr/local/redis/bin# ./redis-cli shutdown

  一旦客户端关闭,则redis服务也停掉。
   2.2.2 后端启动
  第一步:需要将redis解压之后的源码包中的redis.conf文件拷贝到安装目录下的bin目录下。
  第二步:修改redis.conf文件,将daemonize改为yes。
  第三步:使用命令后端启动redis。
  root@zhaojd:/usr/local/redis/bin# ./redis-server redis.conf
  第四步:查看是否启动成功
  ps -aux | grep redis
  关闭后端启动的方式:
  强制关闭:root@zhaojd:/usr/local/redis/bin# kill -9 PID(第四步的查看命令看到的)
  正常关闭:root@zhaojd:/usr/local/redis/bin# ./redis-cli shutdown
3. Redis客户端
  3.1 Redis自带的客户端
  1. 启动
  启动客户端命令:root@zhaojd:/usr/local/redis/bin# ./redis-cli -h 127.0.0.1 -p 6379
  -h:指定访问的redis服务器的ip地址
  -p:指定访问的redis服务器的port端口
  还可以写成:root@zhaojd:/usr/local/redis/bin# ./redis-cli
使用默认配置:默认的ip【127.0.0.1】,默认的port【6379】
  2. 关闭
  Ctrl+c
  127.0.0.1:6379> quit

  3.2 图形界面客户端
  下载图形界面客户端:redis-desktop-manager-0.8.0.3841.exe。安装后打开如下图填写信息,即可连接redis数据库。这里写图片描述
  3.3 Jedis客户端
   3.3.1 Jedis介绍
    Redis不仅是使用命令来操作,现在基本上主流的语言都有客户端支持,比如java、C、C#、C++、php、Node.js、Go等。在官方网站里列一些Java的客户端,有Jedis、Redisson、Jredis、JDBC-Redis、等其中官方推荐使用Jedis和Redisson。 在企业中用的最多的就是Jedis,下面我们就重点学习下Jedis。 Jedis同样也是托管在github上,地址:https://github.com/xetorthio/jedis 需要加如的jar包:commons-pool2-2.3.jar jedis-2.7.0.jar

//测试代码:
package cn.keymobile;

import org.junit.Test;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;


public class JedisCilent {

    @Test
    public void jedisClient() throws Exception {
        Jedis jedis = new Jedis("192.168.17.136", 6379);
        jedis.set("key2", "222");
        String val = jedis.get("key2");
        System.out.println(val);
        jedis.close();
    }

    @Test
    public void jedisPool() throws Exception {
        JedisPool pool = new JedisPool("192.168.17.136", 6379);
        Jedis jedis = pool.getResource();
        jedis.set("key3","333");
        String val = jedis.get("key3");
        System.out.println(val);
        jedis.close();
        pool.close();
    }
}

  Spring整合jedisPool
  1. 添加spring的jar包
  2. 配置spring配置文件applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<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"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans-3.2.xsd 
        http://www.springframework.org/schema/mvc 
        http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd 
        http://www.springframework.org/schema/context 
        http://www.springframework.org/schema/context/spring-context-3.2.xsd 
        http://www.springframework.org/schema/aop 
        http://www.springframework.org/schema/aop/spring-aop-3.2.xsd 
        http://www.springframework.org/schema/tx 
        http://www.springframework.org/schema/tx/spring-tx-3.2.xsd ">

    <!-- 连接池配置 -->
    <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
        <!-- 最大连接数 -->
        <property name="maxTotal" value="30" />
        <!-- 最大空闲连接数 -->
        <property name="maxIdle" value="10" />
        <!-- 每次释放连接的最大数目 -->
        <property name="numTestsPerEvictionRun" value="1024" />
        <!-- 释放连接的扫描间隔(毫秒) -->
        <property name="timeBetweenEvictionRunsMillis" value="30000" />
        <!-- 连接最小空闲时间 -->
        <property name="minEvictableIdleTimeMillis" value="1800000" />
        <!-- 连接空闲多久后释放, 当空闲时间>该值 且 空闲连接>最大空闲连接数 时直接释放 -->
        <property name="softMinEvictableIdleTimeMillis" value="10000" />
        <!-- 获取连接时的最大等待毫秒数,小于零:阻塞不确定的时间,默认-1 -->
        <property name="maxWaitMillis" value="1500" />
        <!-- 在获取连接的时候检查有效性, 默认false -->
        <property name="testOnBorrow" value="false" />
        <!-- 在空闲时检查有效性, 默认false -->
        <property name="testWhileIdle" value="true" />
        <!-- 连接耗尽时是否阻塞, false报异常,ture阻塞直到超时, 默认true -->
        <property name="blockWhenExhausted" value="false" />
    </bean>
    <!-- redis单机 通过连接池 -->
    <bean id="jedisPool" class="redis.clients.jedis.JedisPool"
        destroy-method="close">
        <constructor-arg name="poolConfig" ref="jedisPoolConfig" />
        <constructor-arg name="host" value="192.168.242.130" />
        <constructor-arg name="port" value="6379" />
    </bean>
</beans>
@Test
    public void testJedisPool() {
        JedisPool pool = (JedisPool) applicationContext.getBean("jedisPool");
        Jedis jedis = null;
        try {
            jedis = pool.getResource();
            jedis.set("name", "lisi");
            String name = jedis.get("name");
            System.out.println(name);
        } catch (Exception ex) {
            ex.printStackTrace();
        } finally {
            if (jedis != null) {
                // 关闭连接
                jedis.close();
            }
        }
    }
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值