redis redis-入门

前言:

Redis是一个速度非常快的非关系数据库(non-relational database),它可以存储键(key)与5种不同类型的值(value)之间的映射(mapping)可以将数据存储在内存,也可以持久化到硬盘
redis下载安装:
Redis官方网站:http://www.redis.io/
官方下载:http://redis.io/download 可以根据需要下载不同版本
github下载地址: https://github.com/dmajkic/redis/downloads
redis教程:http://www.yiibai.com/redis/redis_backup.html

下载:

点击进入下载页面

安装:

windows下:
解压下载的zip压缩包即可

启动redis服务:

双击redis-server.exe即可,也cmd打开
redis redis-入门_第1张图片

启动一个客户端:

双击redis-cli.exe,同样可以选用命令行打开(客户端可以启动多个)
redis redis-入门_第2张图片
添加一条数据并取出:
redis redis-入门_第3张图片

数据类型:

String 类型:string 类型的值最大能存储 512MB
eg:
redis redis-入门_第4张图片
Hash(哈希):键值对集合,类似于java中的Map
eg :
redis redis-入门_第5张图片
List(列表):类试java中的list集合
eg:
redis redis-入门_第6张图片
set(集合):类试与java中的set,无序,不重复
eg:
redis redis-入门_第7张图片
zset(有序,不重复集合)
eg:
redis redis-入门_第8张图片

发布订阅:

Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。
Redis 客户端可以订阅任意数量的频道。
创建一个频道并订阅:
在这里插入图片描述
此窗口现在为订阅者,现在模拟(发布者)打开一个新的窗口向订阅者发送两条消息,
redis redis-入门_第9张图片
可以看到订阅者接收到来自 redis_sub频道的两条消息,现在模拟打开一个新的订阅者,再次发布一条消息:

redis redis-入门_第10张图片
可以看到,两个订阅者,同时收到了redis_sub频道发布的消息, 但是新开的订阅者不能收到历史(之前发布的两条)消息.

数据备份和恢复:

SAVE : 备份(会在安装目录下生产dump.rdb文件)
BGSAVE : 恢复(将要恢复的dump.rdb文件放在安装目录下,使用此命令即可)

设置登录密码:

CONFIG get requirepass : 查看是否设置密码
CONFIG set requirepass ‘你的密码’ : 设置密码
设置密码后需要验证身份,否则命令无法执行 : AUTH password
redis redis-入门_第11张图片

java使用redis:

所需依赖:


		<dependency>
			<groupId>redis.clientsgroupId>
			<artifactId>jedisartifactId>
			<version>3.2.0version>
		dependency>

案例:

package com.redis.test;

import java.util.HashMap;
import java.util.Map;

import org.junit.Before;
import org.junit.Test;

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

/**
 * @author : lichenfei
 * @date : 2019年12月31日
 * @time : 下午12:59:28
 *
 */
public class Demo {

    private JedisPool jedisPool;

    private Jedis jedis;

    @Before
    public void before() {
	JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
	jedisPool = new JedisPool(jedisPoolConfig, "127.0.0.1", 6379);
	jedis = jedisPool.getResource();
	System.out.println(jedis.isConnected());
    }

    /**
     * 操作字符串
     */
    @Test
    public void stringTest() {
	jedis.set("username", "lcf");// 设置值
	System.out.println(jedis.get("username"));// lcf
	jedis.del("username");
	System.out.println(jedis.get("username"));// null
    }

    /**
     * 操作map
     */
    @Test
    public void mapTest() {
	Map<String, String> map = new HashMap<String, String>();
	map.put("name", "lcf");
	map.put("age", "18");
	map.put("sex", "M");
	jedis.hmset("map", map);
	System.out.println(jedis.hgetAll("map"));// {name=lcf, age=18, sex=M}
    }

    /**
     * set
     */
    @Test
    public void setTest() {
	jedis.sadd("set", "a", "z", "b", "d", "b", "a");
	System.out.println(jedis.smembers("set").toString());// [d, b, c, a, z]
    }

    /**
     * zset
     */
    @Test
    public void zSetTest() {
	jedis.zadd("zset", 0, "lcf");
	jedis.zadd("zset", 1, "lcf1");
	jedis.zadd("zset", 2, "lcf2");
	jedis.zadd("zset", 3, "lcf3");
	jedis.zadd("zset", 3, "lcf4");
	System.out.println(jedis.zrange("zset", 0, 3));// [lcf, lcf1, lcf2, lcf3]
	System.out.println(jedis.zrange("zset", 0, -1));// 所有数据
	System.out.println(jedis.zcard("zset"));// 长度 : 5
    }

    /**
     * list
     */
    @Test
    public void listTest() {
	jedis.del("list");
	jedis.lpush("list", "la", "lb", "lc", "ld");
	System.out.println(jedis.lrange("list", 0, -1));// [ld, lc, lb, la]
    }

}

springboot - redis:

1:简单整合:

新建springboot项目:(目录如下)
redis redis-入门_第12张图片
application.properties配置文件:

#springboot服务配置
server.port=8081
server.servlet.context-path=/redis

#redis配置
spring.redis.host=127.0.0.1
spring.redis.port=6379

IndexController:

package com.lcf.redis.contro;

import java.util.concurrent.TimeUnit;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author : lichenfei
 * @date : 2020年1月2日
 * @time : 下午1:50:00
 *
 */
@RestController
public class IndexController {

    @Autowired
    private StringRedisTemplate redisTemplate;
    
    private static boolean isSet = false;

    @RequestMapping("index")
    public String index() {
	if (!isSet) {
	    redisTemplate.opsForValue().set("string", "string-data", 5, TimeUnit.SECONDS);// 数据保存5秒
	    isSet = true;
	}
	Object object = redisTemplate.opsForValue().get("string");
	return "data : " + object;
    }

}

测试:
启动redis服务,启动项目浏览器访问:http://127.0.0.1:8081/redis/index
redis redis-入门_第13张图片
五秒后访问结果:
redis redis-入门_第14张图片

你可能感兴趣的:(redis redis-入门)