顶尖的设计网站,共和网站建设公司,dedecms 旅游网站模板,为什么大公司不用uniapp目录
一、认识NoSql
1、定义#xff1a;
2、常见语法
3、与关系型数据库#xff08;SQL#xff09;的区别#xff1a;
二、认识Redis
1、定义#xff1a;
2、特征#xff1a;
3、Key的结构#xff1a;
三、安装Redis
四、Redis常见命令
1、数据结构介绍
2、…目录
一、认识NoSql
1、定义
2、常见语法
3、与关系型数据库SQL的区别
二、认识Redis
1、定义
2、特征
3、Key的结构
三、安装Redis
四、Redis常见命令
1、数据结构介绍
2、Redis的通用命令
1KEYS查看符合模板的所有key
2DEL删除一个指定的key
3EXISTS判断key是否存在
4EXPIRE给一个key设置有效期有效期到期时该key会被自动删除
5TTL查看一个KEY的剩余有效期
3、String类型的命令
1SET添加或者修改已经存在的一个String类型的键值对
2GET根据key获取String类型的value
3MSET批量添加多个String类型的键值对
4MGET根据多个key获取多个String类型的value
5INCR让一个整型的key自增1
6INCRBY:让一个整型的key自增并指定步长例如incrby num 2 让num值自增2
7INCRBYFLOAT让一个浮点类型的数字自增并指定步长
8SETNX添加一个String类型的键值对前提是这个key不存在否则不执行
9SETEX添加一个String类型的键值对并且指定有效期
4、Hash类型的命令
1HSET key field value添加或者修改hash类型key的field的值
2HGET key field获取一个hash类型key的field的值
3HMSET批量添加多个hash类型key的field的值
4HMGET批量获取多个hash类型key的field的值
5HGETALL获取一个hash类型的key中的所有的field和value
6HKEYS获取一个hash类型的key中的所有的field
7HVALS获取一个hash类型的key中的所有的value
8HINCRBY:让一个hash类型key的字段值自增并指定步长
9HSETNX添加一个hash类型的key的field值前提是这个field不存在否则不执行
5、List类型的命令
1LPUSH key element ... 向列表左侧插入一个或多个元素
2LPOP key移除并返回列表左侧的第一个元素没有则返回nil
3RPUSH key element ... 向列表右侧插入一个或多个元素
4RPOP key移除并返回列表右侧的第一个元素
5LRANGE key star end返回一段角标范围内的所有元素
6BLPOP和BRPOP与LPOP和RPOP类似只不过在没有元素时等待指定时间而不是直接返回nil
6、Set类型的命令
1SADD key member ... 向set中添加一个或多个元素
2SREM key member ... : 移除set中的指定元素
3SCARD key 返回set中元素的个数
4SISMEMBER key member判断一个元素是否存在于set中
5SMEMBERS获取set中的所有元素
6SINTER key1 key2 ... 求key1与key2的交集
7SDIFF key1 key2 ... 求key1与key2的差集
8SUNION key1 key2 ... 求key1与key2的并集
7、SortedSet类型的命令
1ZADD key score member添加一个或多个元素到sorted set 如果已经存在则更新其score值
2ZREM key member删除sorted set中的一个指定元素
3ZSCORE key member : 获取sorted set中的指定元素的score值
4ZRANK key member获取sorted set 中的指定元素的排名
5ZCARD key获取sorted set中的元素个数
6ZCOUNT key min max统计score值在给定范围内的所有元素的个数
7ZINCRBY key increment member让sorted set中的指定元素自增步长为指定的increment值
8ZRANGE key min max按照score排序后获取指定排名范围内的元素
9ZRANGEBYSCORE key min max按照score排序后获取指定score范围内的元素
10ZDIFF、ZINTER、ZUNION求差集、交集、并集
五、Redis的Java客户端
1、实现jedis
1引入依赖
2建立连接编写yml文件
3测试
2、jedis连接池
3、SpringDataRedis
1定义
2实现
4、RedisTemplate
5、StringRedisTemplate 一、认识NoSql
1、定义
NoSQL是指非关系型数据库在这种数据库中数据没有被组织成关系表而是以一种更灵活的方式存储。NoSQL数据库通常不需要预定义模式以及支持水平扩展能力这使得它们能够处理大规模和分布式数据。
NoSQL数据库可分为4类键值存储、文档存储、列存储和图形数据库。 键值存储通过在每个键上存储对应的值实现简单的数据将数据以键值对的形式保存例如Redis、Memcached等。 文档存储文档数据存储在类似JSON的无模式格式中。文档存储在MongoDB、Couchbase等数据库中。 列存储数据存储在列簇中而不是行中适合存储结构化和半结构化数据。例如HBase。 图形数据库图形数据库是一种结构化数据存储方式用于处理图形或半结构化数据。例如Neo4j、OrientDB等。 2、常见语法 3、与关系型数据库SQL的区别 二、认识Redis
1、定义 Redis是一个开源的基于内存的键值对存储数据库可以用作缓存、消息队列、计数器等。 2、特征 键值key-value型value支持多种不同数据结构功能丰富单线程每个命令具备原子性低延迟速度快基于内存、IO多路复用、良好的编码。支持数据持久化支持主从集群、分片集群支持多语言客户端 3、Key的结构 三、安装Redis
安装指南https://blog.csdn.net/icbbm/article/details/134895407?csdn_share_tail%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22134895407%22%2C%22source%22%3A%22icbbm%22%7D
四、Redis常见命令
1、数据结构介绍 在官网 https://redis.io/commands 可以查看到不同的命令 2、Redis的通用命令
1KEYS查看符合模板的所有key 以“a”开头 2DEL删除一个指定的key 先批量创建键再做批量删除此时因为k4不存在所以只删掉3个 3EXISTS判断key是否存在 4EXPIRE给一个key设置有效期有效期到期时该key会被自动删除 5TTL查看一个KEY的剩余有效期 3、String类型的命令
1SET添加或者修改已经存在的一个String类型的键值对 2GET根据key获取String类型的value 3MSET批量添加多个String类型的键值对 4MGET根据多个key获取多个String类型的value 5INCR让一个整型的key自增1 6INCRBY:让一个整型的key自增并指定步长例如incrby num 2 让num值自增2 7INCRBYFLOAT让一个浮点类型的数字自增并指定步长 8SETNX添加一个String类型的键值对前提是这个key不存在否则不执行 9SETEX添加一个String类型的键值对并且指定有效期 4、Hash类型的命令 Hash类型也叫散列其value是一个无序字典类似于Java中的HashMap结构。 KEY VALUE field value heima:user:1 name Jack age 21 heima:user:2 name Rose age 18
1HSET key field value添加或者修改hash类型key的field的值 2HGET key field获取一个hash类型key的field的值 3HMSET批量添加多个hash类型key的field的值 4HMGET批量获取多个hash类型key的field的值 5HGETALL获取一个hash类型的key中的所有的field和value 6HKEYS获取一个hash类型的key中的所有的field 7HVALS获取一个hash类型的key中的所有的value 8HINCRBY:让一个hash类型key的字段值自增并指定步长 9HSETNX添加一个hash类型的key的field值前提是这个field不存在否则不执行 5、List类型的命令
1LPUSH key element ... 向列表左侧插入一个或多个元素 2LPOP key移除并返回列表左侧的第一个元素没有则返回nil 3RPUSH key element ... 向列表右侧插入一个或多个元素 4RPOP key移除并返回列表右侧的第一个元素 5LRANGE key star end返回一段角标范围内的所有元素 6BLPOP和BRPOP与LPOP和RPOP类似只不过在没有元素时等待指定时间而不是直接返回nil 6、Set类型的命令
1SADD key member ... 向set中添加一个或多个元素 2SREM key member ... : 移除set中的指定元素 3SCARD key 返回set中元素的个数 4SISMEMBER key member判断一个元素是否存在于set中 5SMEMBERS获取set中的所有元素 6SINTER key1 key2 ... 求key1与key2的交集 7SDIFF key1 key2 ... 求key1与key2的差集 8SUNION key1 key2 ... 求key1与key2的并集 7、SortedSet类型的命令 注意所有的排名默认都是升序如果要降序则在命令的Z后面添加REV即可 1ZADD key score member添加一个或多个元素到sorted set 如果已经存在则更新其score值 2ZREM key member删除sorted set中的一个指定元素 3ZSCORE key member : 获取sorted set中的指定元素的score值
4ZRANK key member获取sorted set 中的指定元素的排名 5ZCARD key获取sorted set中的元素个数 6ZCOUNT key min max统计score值在给定范围内的所有元素的个数 7ZINCRBY key increment member让sorted set中的指定元素自增步长为指定的increment值 8ZRANGE key min max按照score排序后获取指定排名范围内的元素 9ZRANGEBYSCORE key min max按照score排序后获取指定score范围内的元素 10ZDIFF、ZINTER、ZUNION求差集、交集、并集 五、Redis的Java客户端
1、实现jedis
1引入依赖 dependencygroupIdredis.clients/groupIdartifactIdjedis/artifactIdversion5.0.0/version/dependency
2建立连接编写yml文件
spring:redis:host: 192.168.248.152port: 6379password: 1234lettuce:pool:max-active: 8max-idle: 8min-idle: 0max-wait: 100ms
3测试 Testvoid testSaveUser() {// 写入数据redisTemplate.opsForValue().set(user:100, new User(哥, 21));// 获取数据User o (User) redisTemplate.opsForValue().get(user:100);System.out.println(o o);} 2、jedis连接池 3、SpringDataRedis
1定义
SpringData是Spring中数据操作的模块包含对各种数据库的集成其中对Redis的集成模块就叫做SpringDataRedis官网地址Spring Data Redis 提供了对不同Redis客户端的整合Lettuce和Jedis提供了RedisTemplate统一API来操作Redis支持Redis的发布订阅模型支持Redis哨兵和Redis集群支持基于Lettuce的响应式编程支持基于JDK、JSON、字符串、Spring对象的数据序列化及反序列化支持基于Redis的JDKCollection实现 API 返回值类型 说明 redisTemplate.opsForValue() ValueOperations 操作String类型数据 redisTemplate.opsForHash() HashOperations 操作Hash类型数据 redisTemplate.opsForList() ListOperations 操作List类型数据 redisTemplate.opsForSet() SetOperations 操作Set类型数据 redisTemplate.opsForZSet() ZSetOperations 操作SortedSet类型数据 redisTemplate 通用的命令
2实现
1.引入依赖 !--redis依赖--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-redis/artifactId/dependency !--common-pool--dependencygroupIdorg.apache.commons/groupIdartifactIdcommons-pool2/artifactId/dependency
2.配置yml文件
spring:redis:host: 192.168.248.152port: 6379password: 1234lettuce:pool:max-active: 8max-idle: 8min-idle: 0max-wait: 100ms3.注入RedisTemplate
Autowired
private RedisTemplate redisTemplate;4.测试 Testvoid testString() {// 写入一条String数据redisTemplate.opsForValue().set(name, 虎哥);// 获取string数据Object name redisTemplate.opsForValue().get(name);System.out.println(name name);}
4、RedisTemplate 缺点 可读性差内存占用较大 自定义RedisTemplate的序列化方式代码
Configuration
public class RedisConfig {Beanpublic RedisTemplateString, Object redisTemplate(RedisConnectionFactory connectionFactory){// 创建RedisTemplate对象RedisTemplateString, Object template new RedisTemplate();// 设置连接工厂template.setConnectionFactory(connectionFactory);// 创建JSON序列化工具GenericJackson2JsonRedisSerializer jsonRedisSerializer new GenericJackson2JsonRedisSerializer();// 设置Key的序列化template.setKeySerializer(RedisSerializer.string());template.setHashKeySerializer(RedisSerializer.string());// 设置Value的序列化template.setValueSerializer(jsonRedisSerializer);template.setHashValueSerializer(jsonRedisSerializer);// 返回return template;}
}
5、StringRedisTemplate 手动序列化 Testvoid testSaveUser() throws JsonProcessingException {// 创建对象User user new User(虎哥, 21);// 手动序列化String json mapper.writeValueAsString(user);// 写入数据stringRedisTemplate.opsForValue().set(user:200, json);// 获取数据String jsonUser stringRedisTemplate.opsForValue().get(user:200);// 手动反序列化User user1 mapper.readValue(jsonUser, User.class);System.out.println(user1 user1);}