Redis数据库

1. 什么是Redis

  1. redis是一款高性能的NOSQL系列的非关系型数据库
  2. 什么是NOSQL,全新的数据库概念,解决web2.0网站的高并发问题,解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。。
  3. redis的优点,简单部署,开源软件,数据存在缓存中,查询速度快。
  4. 数据存储方式,key,value,文档形式、图片形式等等,可以存储基础类型以及对象或者是集合等各种格式。
  5. redis的缺点,维护的工具和资料有限,不提供对sql的支持,不提供关系型数据库对事务的处理。
  6. 关系型数据库,与非关系型数据库的比较,非关系型数据库查询无需经过sql层的解析,所以性能高,且数据间没有耦合性,扩展性高。关系型数据库,SQL语句方便的在一个表以及多个表之间做非常复杂的数据查询。支持事务,数据安全性高。

2. 主流的NOSQL

3. Redis的数据类型

  1. 字符串类型 String
  2. 哈希类型 hash:map格式
  3. 列表类型 list: linkedlist格式。支持重复元素
  4. 集合类型 set: 不允许重复元素
  5. 有序集合类型 sortedset:不允许重复元素,且元素有顺序

4. Redis的应用场景

  1. 缓存(数据查询、短连接、新闻内容、商品内容等等)。
  2. 聊天室的在线好友列表。
  3. 任务队列。(秒杀、抢购、12306等等)
  4. 应用排行榜
  5. 网站访问统计
  6. 数据过期处理(可以精确到毫秒
  7. 分布式集群架构中的session分离

5. Redis的下载安装

官网:https://redis.io
中文网:http://www.redis.net.cn/
解压直接可以使用:
redis.windows.conf:配置文件
redis-cli.exe:redis的客户端
redis-server.exe:redis服务器端

6. Redis命令

  1. 字符串类型 string
    *存储: set key value
    *获取: get key
    *删除: del key
  2. 哈希类型 hash
    *存储: hset key field value
    *获取:hget key field: 获取指定的field对应的值,hgetall key:获取所有的field和value。
    *删除: hdel key field
  3. 列表类型 list:可以添加一个元素到列表的头部(左边)或者尾部(右边)
    *添加:lpush key value: 将元素加入列表左表,rpush key value:将元素加入列表右边
    *获取: lrange key start end :范围获取
    *删除:lpop key: 删除列表最左边的元素,并将元素返回,rpop key: 删除列表最右边的元素,并将元素返回。
  4. 集合类型 set : 不允许重复元素
    *存储:sadd key value
    *获取:smembers key:获取set集合中所有元素
    *删除:srem key value:删除set集合中的某个元素
  5. 有序集合类型 sortedset:不允许重复元素,且元素有顺序.每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
    *存储:zadd key score value(score 指的是排序位置,可以是1、2、3、4、…,存进去的数据会根据这排序排列)
    *获取:zrange key start end [withscores]
    *删除:zrem key value
  6. 其他通用命令
    keys(空格) * : 查询所有的键
    type key : 获取键对应的value的类型
    del key:删除指定的key value

7. Jedis的使用

  1. String
private static void stringJedis() {
	//1.实例化Jedis对象
	Jedis jedis = new Jedis("localhost",6379);
	//2.String操作
	jedis.set("username","zhangsan");//set key value
	jedis.get("username");//get key value
	jedis.setex("age", 10, "12");// 特殊方法,创建key,value,10秒后删除
	jedis.close();//关闭连接
	}
  1. hash
private static void hashJedis() {
	//1.实例化Jedis对象
	Jedis jedis = new Jedis("localhost",6379);
	//2.Hash操作
	jedis.hset("user", "name", "段延庆");//添加
	jedis.hset("user", "age", "32");
	jedis.hset("user", "gender", "男");
	String hget = jedis.hget("user", "name");//获取
	System.out.println(hget);
	jedis.hdel("user", "name","age");//删除
	String hget2 = jedis.hget("user", "name");//获取
	System.out.println("获取"+hget2);//null
	jedis.close();//关闭连接
	}
  1. list
private static void listJedis() {
	//1.实例化Jedis对象
	Jedis jedis = new Jedis("localhost",6379);
	//2.List操作
	jedis.lpush("shuangfeiren", "A","B","C");//左添加
	jedis.rpush("shuangfeiren", "A","B","C");//右添加
	String lpop = jedis.lpop("shuangfeiren");//左弹出
	System.out.println(lpop);
	String rpop = jedis.rpop("shuangfeiren");//右弹出
	System.out.println(rpop);
	List<String> lrange = jedis.lrange("shuangfeiren", 0, -1);//获取指定元素
	System.out.println(lrange);
	jedis.close();//关闭连接
		
	}
  1. set
private static void setJedis() {
	//1.实例化Jedis对象
	Jedis jedis = new Jedis("localhost",6379);
	//2.Set操作
	jedis.sadd("setAdd", "A","A","B");//添加
	Set<String> smembers = jedis.smembers("setAdd");//获取
	jedis.srem("setAdd", "A");//删除
	Set<String> smembers2 = jedis.smembers("setAdd");//获取
	System.out.println(smembers2);
	jedis.close();//关闭连接
	}
  1. storedSet
private static void sortedJedis() {
	//1.实例化Jedis对象
	Jedis jedis = JedisUites.getJedis();
	//2.sortedSet操作
	jedis.zadd("paihangban", 500, "亚瑟");
	jedis.zadd("paihangban", 1000, "李白");
	jedis.zadd("paihangban", 950, "韩信");
	jedis.zadd("paihangban", 99999,"99999");
	jedis.zrem("paihangban", "99999");
	Set<String> zrange = jedis.zrange("paihangban", 0, -1);
	System.out.println(zrange);
	jedis.close();//关闭连接
	}

8.连接池的使用

public class JedisUites {
	private static JedisPool jedisPool;
	static {
		try {
			//1.读取配置文件
			Properties properties = new Properties();
			properties.load(JedisUites.class.getClassLoader().getResourceAsStream("jedis.properties"));
			//2.获取JedisPoolConfig配置对象
			JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
			jedisPoolConfig.setMaxTotal(Integer.parseInt(properties.getProperty("maxTotal")));
			jedisPoolConfig.setMaxIdle(Integer.parseInt(properties.getProperty("maxIdle")));
			//3.获取连接池对象
			jedisPool = new JedisPool(jedisPoolConfig,properties.getProperty("host"),Integer.parseInt(properties.getProperty("port")));
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	/**
	 * 获取Jedis
	 */
	public static Jedis getJedis() {
		return jedisPool.getResource();
	}
}

9.案例

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值