侧边栏壁纸
博主头像
Epoch

Java开发、Python爬虫、微服务、分布式、前端

  • 累计撰写 94 篇文章
  • 累计创建 111 个标签
  • 累计收到 8 条评论

目 录CONTENT

文章目录

Java--Redis学习(1)

Epoch
2020-06-03 / 0 评论 / 0 点赞 / 315 阅读 / 1,342 字 / 正在检测是否收录...

Redis简介

Remote Dictionary Server(Redis)是一个开源的使用 ANSI C 语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API。
它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。

redis 可以实现对数据的高速存储和读取

接下来介绍对Redis中几种常用类型的操作:

string类型(1)增删操作

package com.xmaven.test;

import redis.clients.jedis.Jedis;

public class TestString {

	public static void main(String[] args) {
		Jedis j = new Jedis("127.0.0.1",6379);
		System.out.println("连接成功");
		
		j.set("name", "张三");				//添加键值
		System.out.println(j.get("name"));	//根据键取值
		
		j.append("name", " 你好");			//追加
		System.out.println(j.get("name"));
		
		j.del("name");						//删除
		System.out.println(j.get("name"));
		j.close();
	}

}

string类型(2)自增自减操作

package com.xmaven.test;

import redis.clients.jedis.Jedis;

public class TestString1 {

	public static void main(String[] args) {
		Jedis j = new Jedis("127.0.0.1",6379);
		System.out.println("连接成功");
		
		j.set("num", "1");
		
		
		j.incr("num");						//值自增1
		j.incrBy("num", 5);					//值自增5
		System.out.println(j.get("num"));
		
		j.set("num", "1");
		j.decr("num");						//值自减1
		j.decrBy("num", 5);					//值自减5
		System.out.println(j.get("num"));
		
		j.close();
	}

}

string类型(3)对多个数据的存取操作

package com.xmaven.test;

import java.util.List;

import redis.clients.jedis.Jedis;

public class TestString2 {

	public static void main(String[] args) {
		Jedis j = new Jedis("127.0.0.1",6379);
		System.out.println("连接成功");
		
		j.mset("name","zhangsan","sex","nan","age","21");	//一次存多个值
		
		List<String> list = j.mget("name","sex","age");		//一次取多个值
		
		for (String s : list) {
			System.out.println(s);
		}
		
		j.close();
	}

}

hash类型数据操作

package com.xmaven.test;

import java.util.List;
import java.util.Set;

import redis.clients.jedis.Jedis;

public class TestHash {

	public static void main(String[] args) {
		Jedis j = new Jedis("127.0.0.1",6379);
		System.out.println("连接成功");
		
		//存储数据
		j.hset("stu", "name", "tom");
		j.hset("stu", "sex", "male");
		j.hset("stu", "age", "22");
		
		//获取某个属性的数据
		System.out.println(j.hget("stu", "name"));
		
		//获取所有的key
		Set<String> set = j.hkeys("stu");
		for (String s : set) {
			System.out.println(s);
		}
		
		System.out.println("========================");
		
		//获取所有values
		List<String> list = j.hvals("stu");
		for (String s : list) {
			System.out.println(s);
		}
		
		//删除指定值
		j.hdel("stu", "name");
		
		//指定值增加或减少
		j.hincrBy("stu", "age", 5);
		
		
		j.close();
	}

}

list类型数据操作

package com.xmaven.test;

import java.util.List;
import java.util.Set;

import redis.clients.jedis.Jedis;

public class TestList {

	public static void main(String[] args) {
		Jedis j = new Jedis("127.0.0.1",6379);
		System.out.println("连接成功");
		
		//存储数据(list)栈结构,从左侧先进的后出
		j.lpush("score", "1","2","3","4");
		
		String s1 = j.rpop("score");
		System.out.println("从右删除了:"+s1);
		
		System.out.println("还剩下:");
		List<String> list = j.lrange("score", 0, -1);
		for (String s : list) {
			System.out.println(s);
		}
		System.out.println("============================");
		
		//存储数据(list)栈结构,从右侧开始先进先出
		j.rpush("price", "5","6","7","8");
		
		String s2 = j.rpop("price");
		System.out.println("从左删除了:"+s2);
		
		System.out.println("还剩下:");
          //第一个数字代表起始位置,第二个数字代表结束位置,-1 代表结束位置为结尾
		List<String> list2 = j.lrange("price", 0, -1);
		for (String s : list2) {
			System.out.println(s);
		}
		
		j.close();
	}

}

set类型数据操作

package com.xmaven.test;

import java.util.List;
import java.util.Set;

import redis.clients.jedis.Jedis;

public class TestSet {

	public static void main(String[] args) {
		Jedis j = new Jedis("127.0.0.1",6379);
		System.out.println("连接成功");
		
		//set里面存储多个值
		j.sadd("names", "tom","cat","dog","tiger");
		//取出所有值
		Set<String> set = j.smembers("names");
		for (String s : set) {
			System.out.println(s);
		}
		System.out.println("=======================");
		//移除指定值,也可以是多个值
		j.srem("names", "cat");
		//判断是否存在某个值
		Boolean ishas = j.sismember("names", "cat");
		System.out.println(ishas ? "有":"没有");
		
		j.close();
	}

}

zset类型数据操作

package com.xmaven.test;

import java.util.List;
import java.util.Set;

import redis.clients.jedis.Jedis;

public class TestZset {

	public static void main(String[] args) {
		Jedis j = new Jedis("127.0.0.1",6379);
		System.out.println("连接成功");
		
		//添加数据,第一个参数为键,第二个参数为分数用于排序使用,第三个参数为值
		j.zadd("nums", 1,"a");
		j.zadd("nums", 2,"b");
		j.zadd("nums", 3,"c");
		j.zadd("nums", 4,"d");
		j.zadd("nums", 5,"1");
		//正序输出
		Set<String> set1 = j.zrange("nums", 0, -1);
		for (String s : set1) {
			System.out.println(s);
		}
		
		System.out.println("======================");
		
		//逆序输出
		Set<String> set2 = j.zrevrange("nums", 0, -1);
		for (String s : set2) {
			System.out.println(s);
		}
		System.out.println("======================");
		//修改某个值的分数
		j.zincrby("nums", -2, "1");//5-2=3
		//获取里面元素的个数,类似于nums的长度
		System.out.println(j.zcard("nums"));
		//移除数据
		j.zrem("nums", "d");
		
		j.close();
	}

}
0

评论区