柚子快报邀请码778899分享:数据库 缓存 Redis

http://yzkb.51969.com/

概念

Redis是一个基于内存中的key-value数据结构存储系统,常用作:数据库、缓存、消息中间件。 被称为结构化的Nosql数据库,非关系型数据库。

常见的关系型数据库(RDBMS):Mysql Oracle DB2 SQLServer 非关系型数据库(NoSql):Redis、Mongo db、MemCached

应用场景: 缓存、任务队列、消息队列、分布式锁

特点: 基于内存存储,读写性能高 适合存储热点数据(热点商品、资讯、新闻) 企业应用广泛

数据类型

Redis存储的是key-value结构的数据,其中key是字符串类型,数据保存在value中,因此Redis的数据类型实际上是指value的数据类型

数据类型描述特点String普通字符串(常用)hash哈希表是一个String类型的field和value的映射表,适合存储对象list列表简单的字符串列表,按照插入顺序排序,可以有重复元素set无序集合String类型的无序集合,集合成员唯一,不能重复sorted set / zset有序集合,没有重复元素与Set相似,但每个元素都会关联一个double类型的分数

下面是存储结构示意图:

常用命令

String操作命令

命令说明SET key value设置指定key的值GET key获取指定key的值SETEX key seconds value设置key的值,并且key的过期时间设为seconds秒SETNX key value只有在key不存在时设置key的值,如果存在不进行任何操作

hash操作命令

命令说明HSET key field value将key中的字段field的值设为valueHGET key field获取存储在哈希表中指定字段的值HDEL key field删除存储在哈希表中的指定字段HKEYS key获取哈希表中所有字段HVALS key获取哈希表中所有值HGETALL key获取在哈希表中指定key的所有字段和值

List列表操作命令

命令说明LPUSH key value1 [value2]将一个或多个值插入到列表头部LRANGE key start stop获取列表指定范围内的元素RPOP key移除并获取列表最后一个元素LLEN key获取列表长度BRPOP key1 [key2] timeout

set集合操作命令

命令说明SADD key member1 [member2]向集合添加一个或多个成员SMEMBERS key返回集合中所有成员SCARD key获取集合的成员数SINTER key1 [key2]返回给定所有集合的交集SUNION key1 [key2]返回所有给定集合的并集SDIFF key1 [key2]返回给定所有集合的差集SREM key member1 [member2]移除集合中一个或多个成员

Zset有序集合操作命令

命令说明ZADD key score1 member1 [score2 member2]向有序集合添加一个或多个成员ZRANGE key start stop [WITHSCORES]通过索引区间返回有序集合中指定区间内的程序员ZINCRBY key increament member有序集合中对指定成员的分数加上增量increamentZREM key member [member]移除有序集合中的一个或多个成员

通用命令

命令说明KEYS pattern查找所有符合给定模式(pattern)的keyEXISTS key检查给定key是否存在TYPE key返回key所存储的值的类型TTL key返回给定key的剩余生存时间(TTL,time to live),以秒为单位DEL keykey存在时删除key

Java操作Redis

现在项目大多数都是基于Spring boot开发的,Spring整合了Redis的操作方式,提供了Spring Data Redis用来简化Redis操作。

第一步导坐标

org.springframework.boot

spring-boot-starter-data-redis

第二步在yml中配置Redis

redis:

host: localhost

port: 6379

#选择要操作的几号数据库(默认有15个数据库)

database: 0

jedis:

#Redis连接池配置

oppl:

max-active: 8 #设置最大连接数

max-wait: 1ms #连接池最大阻塞等待时间

max-idle: 4 #连接池中的最大空闲连接

min-idle: 0 #连接池中的最小空闲连接

第三步通过RedisTemplate对象操作Redis

Spring Data Redis中提供了一个高度封装的类: RedisTemplate,针对jedis客户端中大量api进行了归类封装,将同一类型操作封装为operation接口,具体分类如下:

分类说明获取方法ValueOperations简单的K-V操作opsForValue()SetOperationsset类型数据操作opsForSet()ZSetOperationszset类型数据操作opsForZSet()HashOperations针对map类型的数据操作opsForHash()ListOperations针对List类型的数据操作opsForList()

我们在Test测试类中注入RedisTemplate对象,并通过这个对象来操作Redis 例如:添加字符串类型 key为name,value为zhangsan

@SpringBootTest

@RunWith(SptingRunner.class)

public class Test{

@Autowired

private RedisTemplate redisTemplate;

@Test

public void testString(){

//添加字符串name为张三

redisTemplate.opsForValue().set("name","zhangsan");

}

}

由于RedisTemplate会默认将key序列化存储,如果要修改序列化方式,则需要创建一个配置类

@Configuration

public class RedisConfig extends CachingConfigurerSupport {

@Bean

public RedisTemplate redisTemplate(RedisConnectionFactory connectionFactory) {

RedisTemplate redisTemplate = new RedisTemplate<>();

//默认的Key序列化器为JdkSerializationRedisserializer

redisTemplate.setKeySerializer(new StringRedisSerializer());

redisTemplate.setHashkeySerializer(new StringRedisserializer());

redisTemplate.setConnectionFactory(connectionFactory);

return redisTemplate;

}

}

柚子快报邀请码778899分享:数据库 缓存 Redis

http://yzkb.51969.com/

参考阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: