Redis简单使用

Redis

Redis(全称:Remote Dictionary Server 远程数据服务)是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

1.Redis简介

Redis是一个开源的(BSD许可的)内存数据结构存储,用作数据库、缓存和消息代理。它支持字符串、散列、列表、集合、带范围查询的排序集、位图、超日志、具有RADIUS查询和流的地理空间索引等数据结构。Redis内置了复制、Lua脚本、LRU驱逐、事务处理和不同级别的磁盘上持久化,并通过Redis Sentinel和Redis集群自动分区提供了高可用性。

2.应用场景

  • 频繁请求的、变化率低的数据
  • 缓存
  • 高并发
  • 任务队列

3.Redis下载

4.目录介绍

Redis

5.数据类型

(1) string字符串类型

  • set key value
  • get key
  • del key

(2) hash哈希类型-Map

  • hset mapname key value
  • hget mapname key
  • hdel mapname key

(3) list列表类型-LinkedList

  • lpush key value

     rpush key value
    
  • lrange key start end

  • lpop key

     rpop key
    

(4) set集合类型

  • sadd key value
  • smembers key
  • srem key value

(5) sortedset有序集合类型

  • zadd key score value

  • zrange key start end

     zrange key 0 -1 widthscore
    
  • zrem key value

6.命令

  • 查询所有键:keys *

  • 获取键对应的value的类型:type key

  • 删除指定key及value : del key

7.Java操作Redis

首先在开发工具中导入要用到的Redis架包
Jedis架包

  • jedis-2.9.0.jar

     	Jedis jedis = new Jedis("localhost",6379)
     	jedis.close()
     	不同数据类型的操作
    
  • commons-pool2-2.2.jar

     	JedisPoolConfig config = new JedisPoolConfig()
     	JedisPool jedisPool = new JedisPool(config,"localhost",6379)
     	Jedis jedis = jedisPool.getResource()
    
  • JedisUtil

package com.srzx.sms.utils;

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

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

public class JedisUtil {

    public static Jedis jedis;

    public static Jedis getConnection(){

        if(jedis == null){

            InputStream is = JedisPool.class.getResourceAsStream("/redis.properties");

            Properties prop = new Properties();
            try {
                prop.load(is);
            } catch (IOException e) {
                e.printStackTrace();
            }

            String host = prop.getProperty("host");
            int port = new Integer(prop.getProperty("port"));
            JedisPoolConfig config = new JedisPoolConfig();
            config.setMaxTotal(new Integer(prop.getProperty("maxTotal")));
            config.setMaxWaitMillis(new Integer(prop.getProperty("maxWaitMillis")));
            config.setMaxIdle(new Integer(prop.getProperty("maxIdle")));

            JedisPool pool = new JedisPool(config,host,port);

            jedis = pool.getResource();
        }
        return jedis;
    }

}

  • Redis测试类
package com.srzx.sms.test;

import com.srzx.sms.utils.JedisUtil;
import org.junit.Test;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

import java.util.Set;

public class TestRedis {

    @Test
    public void testUtil(){

        Jedis jedis1 = JedisUtil.getConnection();
        Jedis jedis2 = JedisUtil.getConnection();

        System.out.println("jedis1 = " + jedis1);
        System.out.println("jedis2 = " + jedis2);

        Set<String> set1 = jedis1.smembers("javaset");
        System.out.println("set1 = " + set1);

        Set<String> set2 = jedis2.smembers("javaset");
        System.out.println("set2 = " + set2);

//        jedis1.close();
//        jedis2.close();
    }

    @Test
    public void testPool(){

        JedisPoolConfig config = new JedisPoolConfig();
        config.setMaxTotal(100);
        config.setMaxWaitMillis(10000);
        config.setMaxIdle(10);

        JedisPool pool  = new JedisPool(config,"127.0.0.1",6379);

        Jedis jedis = pool.getResource();

        Set<String> set = jedis.smembers("javaset");
        System.out.println("set = " + set);

        jedis.close();
    }

    @Test
    public void test(){

//        Jedis jedis = new Jedis();
        Jedis jedis = new Jedis("127.0.0.1",6379);

//        jedis.set("course","javaweb");

//        jedis.sadd("javaset","javase","javaee","javame");

        Set<String> set = jedis.smembers("javaset");
        System.out.println("set = " + set);

        jedis.close();
    }

}

8.持久化

1.RDB

  • 默认

  • 在一段时间间隔,检测key在这里插入代码片的变化情况,然后持久化

     	save 900 1
     	save 300 10
     	save 60 10000
    

2.AOF

  • 日志记录方式

     	开启:appendonly yes
    
  • 记录每一条命令的操作

  • 间隔 ,然后持久化

     	# appendfsync always
     	appendfsync everysec
     	# appendfsync no
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值