Redis的简单使用及介绍
2021/5/6 2:25:50
本文主要是介绍Redis的简单使用及介绍,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Redis的简单使用及介绍
文章目录
- Redis的简单使用及介绍
- 一、缓存
- 1.缓存的思想
- 2.缓存的弊端
- 二、Nosql数据库
- 1.什么是Nosql数据库
- 2.Nosql数据库的分类
- 3.Nosql的好处
- 4.Nosql和关系型数据库的区别
- 三、Redis
- 1.什么是redis
- 2.Redis的特点
- 3.Redis的有事
- 4.Redis的作用
- 5.Redis的文件介绍
- 6.Redis的启动
- 7.客户端连接
- 四、Redis的Value的取值
- 1.List&Set&SortedSet区别
- 2.String类型的操作
- 存取单个数据
- 存取多个数据
- 删除数据
- 3.hash类型操作
- 存取单个属性值
- 存取多个属性值
- 删除属性值
- 4.list类型操作
- 右压栈和左弹栈
- 左压栈和右弹栈
- 查看数据
- 5.Set类型操作
- 存取数据
- 删除数据
- 6.SortedSet类型
- 存取数据
- 删除数据
- 7.Redis的通用指令
- 五、Redis的持久化
- 1.RDB的方式
- AOF的方式
- 六、java操作Redis
- 1.Jedis单独的方式
- 2.Jedis连接池的方式
- 3.连接池的封装
- 七、集群的搭建
- Jedis对集群的操作
一、缓存
缓冲的功能,就是提高性能减少与数据库的交互
1.缓存的思想
- 当用户第一次查询的时候取查询数据库,查询到的内容,一方面返回给页面,另一方面最缓存(存在容器中)
- 当用户第二期查询的时候,此时缓存中就有了数据,此时就不用查询数据库就可以拿到数据了
- 当增删改数据库信息时,把缓存清空
核心流程 - 用户访问,先看缓存中有没有
- 如果有则直接拿出返回给页面
- 如果没有则查询数据库,把查询出的内容放到缓存中
2.缓存的弊端
做到数据的实时性比较麻烦,需要在增删改的时候清空数据
二、Nosql数据库
1.什么是Nosql数据库
Nosql,叫非关系型数据库,它的全名叫Not only sql。是针对关系型数据库来说的
2.Nosql数据库的分类
3.Nosql的好处
为了解决高并发、高可用、高可扩展,大数据储存等一系列问题而产生的的数据库解决方案
4.Nosql和关系型数据库的区别
-
区别一
关系型数据库是需要依赖数据库的关系的,比如说主外键,数据储存在硬盘上
非关系型数据库依赖特殊结果,比如redis是key-value的数据格式,数据存在内存中,可持久化 -
区别二
关系型数据库有主外键关系
非关系型数据库没有这个概念 -
区别三
关系型数据库:操作的是硬盘,效率低,安全性稍微高
非关系型数据库(redis)操作的是内存,效率高,但是不安全,数据可能丢失
三、Redis
1.什么是redis
**Redis是使用c语言开发的一个高性能键值Nosql数据库,Redis可以通过一些键值类型来存储数据 **
2.Redis的特点
- 高性能,持久存储,适应高并发的应用场景
- 相比许多键值数据存储,Redis拥有一套较为丰富的数据类型
- Redis数据库完全在内存中,使用磁盘仅用于持久性
- Redis可以将数据复制到任意数量的从服务器
3.Redis的有事
- 异常快速:Redis的速度非常快,支持丰富的数据类型。读的速度是110000次/s,写的速度是81000次/s
- 操作都是原子性:所有Redis操作都是原子的,这保证了如果两个客户端同时访问Redis服务器将获得更新后的值
4.Redis的作用
- 缓存
- 存临时数据
5.Redis的文件介绍
6.Redis的启动
7.客户端连接
四、Redis的Value的取值
注意:Redis存的是key-value,但是key只能是字符串,value的取值有如下几种类型
- 字符串(String)
- 散列(Hash)
- 列表(List)
- 集合(Set)
- 有序集合(SortedSet)
1.List&Set&SortedSet区别
- List类型:有顺序 可以重复
- Set类型:没有顺序 不能重复
- SortedSet类型:有顺序 不能重复
2.String类型的操作
存取单个数据
- 存值
set key value - 取值
get key
存取多个数据
- 存值
mset key value key1 value1 - 取值
mget key key2
删除数据
del key
3.hash类型操作
存取单个属性值
- 存值
hset key field fieldValue - 取值
hget key field
存取多个属性值
- 存值
hmset key field1 field1Value field2 field2Value - 取值
hmget key field1 field2
删除属性值
- 语法
hdel key field1 field2
4.list类型操作
有顺序可重复
右压栈和左弹栈
右压栈 是指数据从头添加,数据春旭往后排,类似数据向右压
左弹栈 是指数据从左边弹出
- 右压栈
lpush key value1 value2 value3 - 左弹栈
lpop key (从左边弹出第一个)
左压栈和右弹栈
左压栈:表示数据从后添加
右弹栈:表示数据从后弹出
- 左压栈
rpush key value1 value2 value3 - 右弹栈
rpop key (从右边弹出一个)
查看数据
- 语法
lrange key startIdex endIndex
注意:当endIndex=-1时,表示查询所有
5.Set类型操作
不可重复没有顺序
存取数据
- 存数据
sadd key value1 value2 value3 - 取数据
smembers key
删除数据
- 语法
srem key value
6.SortedSet类型
有序,不能重复
注意:每个元素都会关联一个double类型的分数,redis正是通过分数来为集合中的成员进行从小到大的排序。
存取数据
- 存值
zadd key score1 value1 score2 value2 - 取值
zrange key startIdex endIdex
当endIdex等于-1时,表示查询所有
删除数据
- 语法
zrem key value
7.Redis的通用指令
key* 获得所有的key
key list* 获得以list开头的key
五、Redis的持久化
redis是把市局存在内存中的,如果我们的服务器关机,这个时候内存中的数据将不存在,所以要做持久化
当服务器再次启动的时候,Redis就会把本地数据加载到内存中
1.RDB的方式
这种持久化方式是磨人的,不用任何配置
- 规则
- 持久化文件
AOF的方式
每一次操作或者每一秒,都会吧记录持久化到硬盘中(费资源),是每次还是每秒取决于配置
- 开启方式
六、java操作Redis
- Jedis的方式
- SpringDataRedis的方式
1.Jedis单独的方式
- 导入jar
commons-pool2-2.3.jar
jedis-2.7.0.jar
- 对String的操作
- 对hash的操作
- 对List的操作
- 对set的操作
- 对sortedSet的操作
2.Jedis连接池的方式
/** * 连接池的使用 */ // @Test public void pool() { JedisPoolConfig config = new JedisPoolConfig(); // 最大空闲数 config.setMaxIdle(10); // 最大连接数 config.setMaxTotal(50); //通过配置类创建连接池 JedisPool pool = new JedisPool(config,"localhost",6379); // 在连接池中取出Jedis连接 Jedis jedis = pool.getResource(); jedis.set("haha","窗前明月光"); String haha = jedis.get("haha"); System.out.println(haha); }
3.连接池的封装
- 第一步:新建一个jedis.properties文件
host=localhost port=6379 maxIdle=10 maxTotal=50
- 第二步:编写工具类
public class JedisUtil { private static JedisPool jedisPool; static { InputStream in = JedisUtil.class.getClassLoader().getResourceAsStream("redis.properties"); Properties properties = new Properties(); try { properties.load(in); JedisPoolConfig config = new JedisPoolConfig(); // 最大空闲数 config.setMaxIdle(Integer.parseInt(properties.getProperty("maxIdle"))); // 最大连接数 config.setMaxTotal(Integer.parseInt(properties.getProperty("maxTotal"))); jedisPool = new JedisPool(config, properties.getProperty("host"), Integer.parseInt(properties.getProperty("port"))); } catch (IOException e) { throw new RuntimeException("配置文件加载失败"); } } /** * 这个是获得Jedis * * @return */ public static Jedis getJedis() { return jedisPool.getResource(); } /** * 释放资源 */ public static void release(Jedis jedis) { //这个表示当前jedis链接 放到我们链接池中 并不是关闭了 jedis.close(); } }
七、集群的搭建
- 复制一份配置文件
- 修改复制的配置文件
- 根据不同的配置文件分别启动2次
Jedis对集群的操作
@Test public void fun() { JedisPoolConfig config = new JedisPoolConfig(); config.setMaxTotal(50); config.setMaxIdle(10); JedisShardInfo info1 = new JedisShardInfo("localhost", 6379); JedisShardInfo info2 = new JedisShardInfo("localhost", 7777); List<JedisShardInfo> list = new ArrayList<>(); list.add(info1); list.add(info2); ShardedJedisPool pool = new ShardedJedisPool(config, list); ShardedJedis jedis = pool.getResource(); for (int i = 0; i <100; i++) { jedis.set("name"+i,"huige"+i); } jedis.close(); } }
这篇关于Redis的简单使用及介绍的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-31Tiny RDM:你的下一代Redis桌面GUI神器-icode9专业技术文章分享
- 2024-03-21redisinsight-v2
- 2024-02-26Typed property App\Api\Mapper\GamePropsConfigMapper::$apiRedis must not be accessed before initia-icode9专业技术文章分享
- 2024-02-21redisson getlock
- 2024-02-20redis config
- 2024-02-20redis leaderboard
- 2024-01-23缓存选型:Redis or MemCache
- 2024-01-22面试官:Redis持久化能关吗?怎么关?
- 2024-01-21Redis压测工具redis-benchmark-icode9专业技术文章分享
- 2024-01-19这才是你应该了解的Redis数据结构!