码迷,mamicode.com
首页 > 其他好文 > 详细

redis

时间:2017-08-26 20:43:50      阅读:204      评论:0      收藏:0      [点我收藏+]

标签:tar.gz   字符   color   2.x   let   bsp   使用   环境   nbsp   

NoSql

为了解决高并发高可用高可扩展大数据存储等一系列问题而产生的数据库解决方案就是NoSql。

NoSql,叫非关系型数据库,它的全名Not only sql。它不能替代关系型数据库只能作为关系型数据库的一个良好补充。 

redis

Redis是使用c语言开发的一个高性能键值数据库。Redis可以通过一些键值类型来存储数据。

键值类型

String字符类型

map散列类型

list列表类型

set集合类型

sortedset有序集合类型

 

 redis的应用场景

缓存(数据查询、短连接、新闻内容、商品内容等等)。(最多使用

分布式集群架构中的session分离。 

聊天室的在线好友列表。

任务队列。(秒杀、抢购、12306等等) 

redis下载

官网地址:http://redis.io/

下载地址:http://download.redis.io/releases/redis-3.0.0.tar.gz

redis安装在linux上 

1.1 Redis安装

RedisC语言开发,建议在linux上运行,本教程使用Centos6.4作为安装环境。

第一步安装VMware,并且在VMware中安装centos系统(参考linux教程)。

第二步:将redis的压缩包,上传到linux系统

第三步redis的压缩包进行解压缩

Redis解压缩之后的文件是用c语言写的源码文件

 tar -zxf redis-3.0.0.tar.gz

第四步安装c语言环境(安装centos之后,自带c语言环境)

 yum install gcc-c++

第五步编译redis源码

cd redis-3.0.0

 make

第六步:安装redis

 make install PREFIX=/usr/local/redis19

第七步查看是否安装成功

  

redis启动 

前端启动的命令

./redis-server 

前端启动的关闭

强制关闭:Ctrl+c

./redis-cli shutdown

启动界面

技术分享

 

  后端启动

 

第一步需要将redis解压之后的源码包中的redis.conf文件拷贝到bin目录下

[root@itheima bin]# cp /root/redis-3.0.0/redis.conf ./

 

第二步修改redis.conf文件daemonize改为yes

先要使用vim redis.conf

 技术分享

第三步使用命令后端启动redis

[root@itheima bin]# ./redis-server redis.conf

第四步查看是否启动成功

 技术分享

强制关闭:kill -9 5071

正常关闭: ./redis-cli shutdown

 

 Redis自带的客户端

 

启动

 

启动客户端命令: ./redis-cli -h 127.0.0.1 -p 6379

 

-h:指定访问的redis服务器的ip地址

 

-p:指定访问的redis服务器的port端口

 

 

 

还可以写成: ./redis-cli

 

使用默认配置默认的ip127.0.0.1】,默认的port6379

 

关闭

 

Ctrl+c

 

127.0.0.1:6379> quit

 

 

 

 

 jedis介绍

 

技术分享

 

 

 

@Test
    public void testJedis() {
        //创建一个Jedis的连接
        Jedis jedis = new Jedis("127.0.0.1", 6379);
        //执行redis命令
        jedis.set("mytest", "hello world, this is jedis client!");
        //从redis中取值
        String result = jedis.get("mytest");
        //打印结果
        System.out.println(result);
        //关闭连接
        jedis.close();
        
    }

 

 连接池连接

@Test
    public void testJedisPool() {
        //创建一连接池对象
        JedisPool jedisPool = new JedisPool("127.0.0.1", 6379);
        //从连接池中获得连接
        Jedis jedis = jedisPool.getResource();
        String result = jedis.get("mytest");
        System.out.println(result);
        //关闭连接
        jedis.close();
        
        //关闭连接池
        jedisPool.close();
    }

 

Spring整合jedisPool

  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();
            }
        }
    }

 Redis数据类型

 

 

Redis中存储数据是通过key-value存储的对于value的类型有以下几种

  • 字符串
  • Hash类型
  • List
  • Set
  • SortedSetzset
  • String类型

     语法:SET key value

127.0.0.1:6379> set test 123
OK

  语法:GET key

127.0.0.1:6379> get test
"123“

语法

MSET key value [key value …]

MGET key [key …]

127.0.0.1:6379> mset k1 v1 k2 v2 k3 v3
OK
127.0.0.1:6379> get k1
"v1"
127.0.0.1:6379> mget k1 k3
1) "v1"
2) "v3"

语法:GETSET key value 赋值并取值

127.0.0.1:6379> getset s2 222
"111"
127.0.0.1:6379> get s2
"222"

语法:DEL key 删除

127.0.0.1:6379> del test
(integer) 1

 

语法:INCR key 增减

127.0.0.1:6379> incr num
(integer) 1
127.0.0.1:6379> incr num
(integer) 2
127.0.0.1:6379> incr num
(integer) 3

语法:INCRBY key increment    增加指定的整数

127.0.0.1:6379> incrby num 2
(integer) 5
127.0.0.1:6379> incrby num 2
(integer) 7
127.0.0.1:6379> incrby num 2
(integer) 9

语法:DECR key   递减数值

127.0.0.1:6379> decr num
(integer) 6
127.0.0.1:6379> decr num
(integer) 5
127.0.0.1:6379> decrby num 3
(integer) 2
127.0.0.1:6379> decrby num 3
(integer) -1

语法:APPEND key value

127.0.0.1:6379> set str hello
OK
127.0.0.1:6379> append str " world!"
(integer) 12
127.0.0.1:6379> get str 
"hello world!

 

 

语法:STRLEN key   返回键值的长度,如果键不存在则返回0

 

 

127.0.0.1:6379> strlen str 
(integer) 0
127.0.0.1:6379> set str hello
OK
127.0.0.1:6379> strlen str 
(integer) 5

 

 

 

 

 

 

 

 

...

redis

标签:tar.gz   字符   color   2.x   let   bsp   使用   环境   nbsp   

原文地址:http://www.cnblogs.com/hudj/p/7436225.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!