Redis基础

##redis
1. 概念:是一款高性能的NOSQL系列的非关系型的数据库
1. 关系型数据库
1. 数据之间有关联关系
2. 数据存储在硬盘的文件上
2. 非关系型数据
1. 数据之间没有关联关系
2. 数据存储在内存中
3.
2. 下载安装
1. 官网:https://redis.io/
2. 中文网:https://www.redis.net.cn/
1. redis.windows.conf:配置文件
2. redis-cli.exe:redis的客户端
3. redis-server.exe:redis服务器端
3. 命令操作
1. 数据结构:
1. redis存储的是:key,value格式的数据,其中key都是字符串,value有5种不同的数据结构
2. value的数据结构
1. 字符串类型 string
1. 存储:set key value
2. 获取:get key
3. 删除:del key
2. 哈希类型 hash:map格式
1. 存储:hset key field value
2. 获取:hget key field或hgetall key获取所有的键和值
3. 删除:hdel key field
3. 列表类型 list:linkedlist格式
1. 可以添加一个元素到列表的头部(左边)或者尾部
1. 添加:
1. lpush key value:将元素添加到链表左边
2. rpush key value:将元素添加到链表左边
2. 获取:
1. lrang key start end:范围获取
3. 删除:
1. lpop key :删除列表最左边的元素,并将元素返回
2. rpop key :删除列表最右边的元素,并将元素返回

			4. 集合类型 set:不允许重复元素
				1. 储存:sadd key vakue
				2. 获取:smembers key:获取set集合中所有元素
				3. 删除:srem key value:删除set集合中的某个元素 
			5. 有序集合类型 sortedset:不允许重复元素,且元素有顺序
				1. 存储:zadd key score value:
				2. 获取:zrange key start end:如zrange mysert 0 -1 withscores
				3. 删除:zren key value 
			6. 通用命令
				1. keys *:查询所有的键
				2. type key :获取键对应的value的类型
				3. del key :删除指定的key value
			
4. 持久化操作:
	1. redis是一个内存数据库,当redis服务器重启,数据会丢失,可以将redis内存中的数据持久化保存到硬盘文件中
	2. redis持久化机制:
		1. RDB:默认方式,不需要进行配置,默认使用这种机制
			1. 在一定的事件间隔中,检测key的变化情况
				1. 编辑redis。windows.conf文件
					save 900 1   15分钟之后有一个key变化就会持久化一次
					save 300 10  5分钟
					save 60  10000 1.分钟至少有10000次改变
			2. 重新启动redis服务器,并指定配置文件
				redis-server.exe redis.windows.conf
		2. AOF:日志记录的方式,可以记录每一条命令的操作,可以每一次命令操作后,持久化数据
			1. appendonly no(关闭AOF)-----》appendonly yes(开启AOF)
				1. appendfsync everysec--每隔一秒操作一次
				2. appendfsync always:每一次操作都进行持久化
				3. appendfsync no:不进行持久化
5. 使用Java客户端操作redis
	* Jedis:一款java操作redis数据库的工具
	* 使用步骤:
		* 下载jedis的jar包
		* 使用
	 @Test
public void test1(){
    //获取连接
    Jedis jedis=new Jedis("localhost",6379);
    //操作
    jedis.set("username","zhangsan");
    //关闭连接
    jedis.close();
}
* Jedis操作各种redis数据结构
	1. 字符串类型 string
				1. 存储:set key value
				2. 获取:get key 
				3. 删除:del key
		  //可以使用setex()方法存储可以指定过期的key value
    jedis.setex("activecode",20,"hehe");

			2. 哈希类型 hash:map格式
				1. 存储:hset key field value
				2. 获取:hget key field或hgetall key获取所有的键和值
				3. 删除:hdel key field
			 //获取hash的所有map中的数据
    Map<String,String> user=jedis.hgetAll("user");

    Set<String> keySet=user.keySet();
    for (String key:keySet
         ) {
        String value=user.get(key);
        System.out.println(value);
    }
			3. 列表类型 list:linkedlist格式
				1.   可以添加一个元素到列表的头部(左边)或者尾部
					1.   添加:
						1.   lpush key value:将元素添加到链表左边
						2.   rpush key value:将元素添加到链表左边
					2. 获取:
						1. lrang key start end:范围获取
					3. 删除:
						1. lpop key :删除列表最左边的元素,并将元素返回
						2. rpop key :删除列表最右边的元素,并将元素返回

				    public void test3(){
    //获取连接
    Jedis jedis=new Jedis("localhost",6379);//如果使用空参构造,则为默认值
    //jedis.lpush("mylist","a","b","c");
    //jedis.rpush("mylist","a","b","c");
    //范围获取
    List<String> mylist = jedis.lrange("mylist", 0, -1);
    System.out.println(mylist);
    String mylist1 = jedis.lpop("mylist");
    System.out.println(mylist1);
    //关闭连接
    jedis.close();
}
}
			4. 集合类型 set:不允许重复元素
				1. 储存:sadd key vakue
				2. 获取:smembers key:获取set集合中所有元素
				3. 删除:srem key value:删除set集合中的某个元素 
							

			5. 有序集合类型 sortedset:不允许重复元素,且元素有顺序
				1. 存储:zadd key score value:
				2. 获取:zrange key start end:如zrange mysert 0 -1 withscores
				3. 删除:zren key value 
 * jedis连接池:JedisPool
	 * 使用:
		 * 创建JedisPool连接池对象
		 * 调用方法 getResource()方法获取Jedis连接
 @Test
public void test7(){
    //创建一个配置对象
    JedisPoolConfig config=new JedisPoolConfig();
    config.setMaxTotal(50);
    config.setMaxIdle(10);
    //创建Jedis连接池对象
    JedisPool jedisPool=new JedisPool(config,"localhost",6379);
    //获取连接
    Jedis jedis = jedisPool.getResource();
     jedis.set("hehe","haha");
     jedis.close();
}
配置一个工具类
/**
* 获取连接的方法的工具类
 * 加载配置文件,配置连接池的参数
* 提供获取连接的方法
 */
public class JedisPoolUtils {
private static JedisPool jedisPool;
 static {
   //读取配置文件
   InputStream is = JedisPoolUtils.class.getClassLoader().getResourceAsStream("jedis.properties");
    //创建一个Properties对象
   Properties pro=new Properties();
   //关联文件
   try {
       pro.load(is);
   } catch (IOException e) {
       e.printStackTrace();
   }
   //获取数据,设置到JedisPoolConfig中
   JedisPoolConfig config=new JedisPoolConfig();
   config.setMaxTotal(Integer.parseInt(pro.getProperty("maxTotal")));
   config.setMaxIdle(Integer.parseInt(pro.getProperty("maxIdle")));
    //初始化JedisPool
   jedisPool=new JedisPool(config,pro.getProperty("host"),Integer.parseInt(pro.getProperty("port")) );

}

/**
 * 获取连接方法
 */
public static Jedis getJedis(){
    return jedisPool.getResource();
}
}

create dataBase day23;
use day23;
create table province(
id int primary key auto_increment,
name varchar(20) not null;
);
insert into province values(null,“北京”);
insert into province values(null,“上海”);
insert into province values(null,“广州”);
insert into province values(null,“陕西”);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值