Redis笔记(安装配置+常用命令+Java操作+redis集群Redis-Cluster+可视化工具)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

进入redis安装目录下,修改配置文件,进行后台启动服务
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

修改配置文件,设置密码。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
修改如下配置文件
然后可以通过window客户端进行对Linux服务端进行连接
在这里插入图片描述

====================================================

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

=========================================================

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

public class JedisTest{
	@Test
	public void testRedis(){
		//1.获取连接
		Jedis jedis = new Jedis("localhost",6379);
		//2.执行具体操作
		jedis.set("username","jordan");
		String value = jedis.get("username");
		jedis.hset("myhash","addr","beijing");
		String hValue = jedis.hget("myhash","addr");
		Set<String> keys = jedis.keys("*");
		for(String key:keys){
			System.out.println(key);
		}
		jedis.del("username");
		//3.关闭连接
		jedis.close();
	}
}

在这里插入图片描述
在这里插入图片描述
SpringBoot项目中

spring:
	application:
		name: apringdataredis_demo
	redis:
		host: host
		port: 6379
		password: 123456
		database: 0
		jedis:
			pool:
			 max-active: 8 #最大连接数
			 max-wait: 1ms #连接池中最大阻塞等待时间
			 max-idle: 4 # 连接池中的最大空闲连接   
			 min-idle: 0 # 连接池中的最小空闲连接

该配置类用以将改变序列化方式
在这里插入图片描述

@Configuration
public class RedisConfig extends CachingConfigurerSupport{
	@Bean
	public RedisTemplate<Object,Object> redisTemplate(RedisConnectionFactory connectionFactory){
		RedisTemplate<Object,Object> redisTemplate = new RedisTemplate<>();
		//默认的key序列化器为:JdkSerializationRedisSerializer
		//修改如下的序列化
		redisTemplate.setKeySerializer(new StringRedisSerializer());
		redisTemplate.setHashKeySerializer(new StringRedisSerializer());
		redisTemplate.setConnectionFactory(connectionFactory);
		return redisTemplate;
	}
}
@SpringBootTest
@RunWith(SpringRunner.class)
public class SpringDataRedisTest{
	@Autowired
	private RedisTemplate redisTemplate;

	//操作String类型
	@Test
	public void testString(){
		ValueOperations valueOperations = redisTemplate.opsForValue();//简单的k-v操作
		//key和value存放的时候会使用到序列化器
		//key需要更改默认的序列化器,而value不需修改,直接使用默认的序列化器即可
		valueOperations.set("city","beijing");
		Object value = rdisTemplate.opsForValue().get("city");

		//指定设置的超时时间
		redisTemplate.opsForValue().set("key1","value1",10L,TimeUnit.SECONDS);

		//如果不存在就设置,没有操作返回false
		Boolean b = redisTemplate.opsForValue().setIfAbsent("city123","nanjing");
	}

	//操作Hash类型
	@Test
	public void testHash(){
		HashOperations hashOperations = redisTemplate.opsForHash();
		//存值
		hashOperations.put("002","name","jordan");
		hashOperations.put("002","age","23");

		//取值
		String age = (String)hashOperations.get("002","name");
		//获取hash结构所有的字段
		Set Keys = hashOperations.keys("002");
		for(Object key : keys){
			System.put.println(key);
		}
		//获取hash结构中所有的值
		List values = hashOperations.values("002");
		for(Object value : values){
			System.out.println(value);
		}
	}

	//操作List类型数据
	@Test
	public testList(){
		ListOperations listOperations = redisTemplate.opsForList();
		listOperations.leftPush("myLists","a");
		listOperations.leftPushAll("myList","b","c","d");
		
		//取值
		List<String> myList = listOperations.range("myList",0,-1);
		for(String value:myList){
			System.out.println(myList);
		}
		//获取列表长度
		Long size = listOperations.size("myList");
		int lSize = size.intValue();
		for(int i = 0;i<lSize;i++){
			//出队列
			Object element = listOperations.rightPop("myList")
			System.out.println(element);
		}
		
	}

	//操作Set类型数据
	@Test
	public void testSet(){
		SetOperations setOperations = redisTemplate.opsForSet();
		//存值
		setOperations.add("myset","a","b","c","a");
		//取值
		Set myset = setOperations.members("myset");
		for(String o :mySet){
			System.out.println(o);
		}
		//删除成员
		setOperations.remove("myset"); 
	}

	//操作ZSet类型数据
	@Test
	public void testZset(){
		ZSetOperations zSetOperations = redisTemplate.opsForZSet();
		//存值
		zSetOperations.add("myZset","a",10.0);
		zSetOperations.add("myZset","b",11.0);
		zSetOperations.add("myZset","c",12.0);
		zSetOperations.add("myZset","d",13.0);
		//取值
		set<String> myZset = zSetOperations.range("myZset",0,-1);
		for(String s:myZset){
			System.out.println(s)
		}
		//修改分数
		zSetOperations.incrementScore("myZset","b",20.0);
		//删除成员
		zSetOperations.remove("myZset","a","b");
	}

	//通用操作
	@Test
	public void testCommon(){
		//获取redis中左右的key
		Set<String> keys = redisTemplate.keys("*");
		for(String key:keys){
			System.out.println(key)
		}
		//判断某个key是否存在
		Boolean itcast = redisTemplate.hasKey("itcast");
		System.out.prinltn(itcast);
		//删除指定key
		redisTemplate.delete("myZset");
		//获取指定key对应的value数据类型
		DataType myset = redistemplate.type("myset");
	}
}

======================================================================================

Redis-Cluster集群
官方推荐6个实力,3个主节点,3个从节点
高可用:一旦有主节点发生故障,可以选举出对一个的从节点称为新的主节点继续对外提供服务。
在这里插入图片描述

槽位:
在这里插入图片描述
使用redis建立集群

  1. 进入其中一个节点redis后台docker exec -it redis-7001 bash
    在这里插入图片描述

  2. 创建三个主节点,指定副本,自动分配各槽以及主节点对一个从节点
    在这里插入图片描述
    在这里插入图片描述

  3. 进行操作(集群模式需要加参数-c)
    在这里插入图片描述
    内部会根据key进行重定向对应的节点槽
    在这里插入图片描述
    同样对主节点的操作也会对应同步到从节点
    在这里插入图片描述

  4. 模拟主节点宕机

查看集群状况(包括集群节点数量)
在这里插入图片描述
查看节点状况
在这里插入图片描述

docker stop redis-7001
从节点7006取代宕机的7001,如果7001重新上线,那么7001成为7006的从节点
在这里插入图片描述

Redis可视化工具

iredis工具通过命令行格式化json。
官网地址:https://iredis.io/
在这里插入图片描述

可视化工具

桌面版这次评测的软件如下:

  • redis desktop manager 官网:https://redisdesktop.com/ ,以前免费,现在收费。
  • medis 官网:http://getmedis.com/,免费,缺点是不支持key的命名空间展示,不支持redis 5.0的stream数据类型,命令行比较单一,不支持自动匹配和提示。支持的value的展现方式也只有3种。
  • AnotherRedisDesktopManager官网:https://github.com/qishibo/AnotherRedisDesktopManager,不支持stream数据类型。命令行模式也比较单一。value展示支持的类型也只有3种。
  • fastoredis 官网:https://fastoredis.com/,收费,还要注册账号
  • redis-plus 官网:https://gitee.com/MaxBill/RedisPlus,免费桌面客户端软件
  • red 官网:在苹果Mac用户可以去app store里面搜,app store下载的redis可视化工具

Web版本评测的软件如下:

  • redis-insight,官网https://redislabs.com/redisinsight/ 全面性和分析监控方面,确实是其他redis可视化工具难以企及的

IDE插件版本,这里只评测IntelliJ IDEA的插件,eclipse的就不作介绍了

  • Iedis2 IntelliJ IDEA的插件,在IDEA的plugin市场里就可以搜到,但是为收费插件
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值