Ethon

为什么要有方法,因为懒惰是一种美德。

   :: 首页  :: 新随笔  ::  ::  :: 管理

Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。

Redis 与其他 key - value 缓存产品有以下三个特点:

  • Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
  • Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
  • Redis支持数据的备份,即master-slave模式的数据备份。

Redis优势:

  • 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s
  • 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作
  • 原子 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性。
  • 丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性

Redis中的数据结构:

  • String(字符串):特点就是key - value类型
  • Hash(哈希结构):特点是key - (field - value), (field2 - value2), (field3- value3)......
  • List(链表):特点是 key - value1,value2,value3,value4....
  • Set(集合):特点是key - value1,value2,value3.....(集合的value是无顺序的)
  • hSet(有序集合):特点key - (value:score),(value:score),(value:score)... (有序集合是根据value的评分排序)
  • 基数

Redis应用场景

1)缓存服务器

 2)高并发的读写

 3)数据共享

 

 4)分布式锁

 

5)自增长编号的生成

 java操作redis

# 导入依赖
<dependency>
     <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
  <version>3.1.0</version>
</dependency>
public static void main(String[] args) {
        //连接redis
        Jedis jedis = new Jedis("192.168.189.130",6379);
        jedis.auth("root"); // 密码
        //操作redis
        jedis.set("name","xiaoming");
        jedis.set("age","19");
        Object name = jedis.get("name");
        Object age = jedis.get("age");
        System.out.println(name+" "+age); // xiaoming 19
        //关闭连接
        jedis.close();
    }

Spring操作redis

1.导入依赖

<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-redis</artifactId>
    <version>2.2.6.RELEASE</version>
</dependency>

<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>3.1.0</version>
</dependency>

2.配置applicationContext-redis.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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <!-- 配置redis连接池对象 -->
    <bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig">
        <!-- 最大空闲数 -->
        <property name="maxIdle" value="50"/>
        <!-- 最大连接数 -->
        <property name="maxTotal" value="100"/>
        <!-- 最大等待时间 -->
        <property name="maxWaitMillis" value="20000"/>
    </bean>

    <!-- 配置redis连接工厂 -->
    <bean id="connectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
        <!-- 配置连接池 -->
        <property name="poolConfig" ref="poolConfig"/>
        <!-- 配置主机 -->
        <property name="hostName" value="192.168.189.130"/>
        <!-- 配置端口 -->
        <property name="port" value="6379"/>
        <!-- 配置密码 -->
        <property name="password" value="root"/>
    </bean>

    <!-- 配置redis模板对象 -->
    <bean class="org.springframework.data.redis.core.RedisTemplate">
        <!-- 配置连接工厂 -->
        <property name="connectionFactory" ref="connectionFactory"/>
    </bean>
</beans>
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:applicationContext-redis.xml")
public class Main {

    @Autowired
    private RedisTemplate redisTemplate;

    @Test
    public void test(){
        redisTemplate.opsForValue().set("name","liming");
        redisTemplate.opsForValue().set("age",21);
        Object name = redisTemplate.opsForValue().get("name");
        Object age = redisTemplate.opsForValue().get("age");
        System.out.println(name+" "+age); // liming 21
    }
}

SpringBoot操作redis

1.导入依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
    <version>2.2.5.RELEASE</version>
</dependency>

2.配置application.yml

spring:
  redis:
    host: 192.168.189.130
    password: root
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringbootRedisApplicationTests {

    @Autowired
    private RedisTemplate redisTemplate;

    @Test
    public void contextLoads() {
        redisTemplate.opsForValue().set("name","xiaoli");
        redisTemplate.opsForValue().set("age",23);
        Object name = redisTemplate.opsForValue().get("name");
        Object age = redisTemplate.opsForValue().get("age");
        System.out.println(name+" "+age); // xiaoli 23
    }
}

 

Redis分布锁 https://www.cnblogs.com/wakey/p/10725786.html

posted on 2020-04-15 10:08  Ethon  阅读(527)  评论(0编辑  收藏  举报