标签:Redis 数据库 redis 列表 参数 key 集合 redisTemplate
Redis
简介和使用:
简介:
- Redis是一个基于内存的key-value结构数据库;
- 基于内存存储,读写性能高;
- 适合存储热点数据(热点商品、资讯、新闻);
- 企业应用广泛;
使用:
- 启动服务端,命令提示符处于Redis的安装目录下,输入服务端的命令和Redis的配置文件;
- 启动服务端命令:
redis-server.exe redis.windows.conf
;
- 启动客户端,命令提示符处于Redis的安装目录下,输入客户端的命令;
- 启动客户端命令:
redis-cli.exe [-h 服务端地址 -p Redis启动的端口号 -a 数据库密码]
;
- redis.windows.conf配置文件中设置端口号和密码;
- 在requirepass后设置密码,如:
requirepass 自定义密码
;
数据类型:
介绍:
- Redis存储的是key-value结构的数据,其中key是字符串类型,value有5种常用的数据类型;
各数据类型特点:
- 字符串(string):普通字符串,Redis中最简单的数据类型;
- 哈希(hash):也叫散列,类似于Java中的HashMap结构;
- 列表(list):按照插入顺序排序,可以有重复元素,类似于Java中的LinkedList;
- 集合(set):无序集合,没有重复元素,类似于Java中的HashSet;
- 有序集合(sorted set / zset):集合中每个元素关联一个分数(score),根据分数升序排序,没有重复元素;
Redis操作命令:
字符串操作命令:
指令 |
含义 |
SET key value |
设置指定key的值 |
GET key |
获取指定key的值 |
SETEX key seconds value |
设置指定key的值,并将key的过期时间设为seconds秒 |
SETNX key value |
只有在key不存在时设置key的值 |
DEL key1 key2 |
删除键 |
哈希操作命令:
指令 |
含义 |
HSET key field value |
将哈希表key中的字段field的值设为value |
HGET key field |
获取存储在哈希表中指定字段的值 |
HDEL key field |
删除存储在哈希表中的指定字段 |
HKEYS key |
获取哈希表中所有字段 |
HVALS key |
获取哈希表中所有值 |
列表操作命令:
指令 |
含义 |
LPUSH key value1 [value2] |
将一个或者多个值插入到列表头部 |
LRANGE key start stop |
获取列表指定范围内的元素,从零索引开始,最后的元素可以用-1索引 |
RPOP key |
移除并获取列表最后一个元素 |
LLEN key |
获取列表长度 |
集合操作命令:
指令 |
含义 |
SADD key member1 [member2] |
向集合添加一个或多个成员 |
SMEMBERS key |
返回集合中的所有成员 |
SCARD key |
获取集合的成员数 |
SINTER key1 [key2] |
返回给定所有集合的交集 |
SUNION key1 [key2] |
返回所有给定集合的并集 |
SREM key member1 [member2] |
删除集合一个或多个成员 |
有序集合操作命令:
指令 |
含义 |
ZADD key score1 member1 [score2 member2] |
向有序集合添加一个或多个成员,score是分数,member为元素 |
ZRANGE key start stop [WITHSCORES] |
通过索引区间返回有序集合中指定区间内的成员,WITHSCORES可以看score的分数 |
ZINCRBY key increment member |
有序集合中对指定成员的分数加上增量increment |
ZREM key member [member...] |
移除有序集合中的一个或多个成员 |
通用命令:
指令 |
含义 |
KEYS pattern |
查找所有符合给定模式(pattern)的key |
EXISTS key |
检查给定key是否存在 |
TYPE key |
返回key所储存的值的类型 |
DEL key |
该命令用于在key存在是删除key |
Java操作Redis:
Redis的Java客户端:
- Jedis
- Lettuce
- Spring Data Redis
- Spring Data Redis是Spring的一部分,对Redis底层开发包进行了高度封装。在Spring项目中,可以使用Spring Dta Redis来简化操作;
Spring Data Redis使用方式:
导入Spring Data Redis的maven坐标:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
配置Redis数据源:
spring:
redis:
host: localhost //对应IP地址
port: 6379 //端口号
password: 123456 // 密码
database: 0 // 选择数据库,一共16个数据库,从0到15,默认为0
编写配置类,创建RedisTemplate对象:
@Configuration
@Slf4j
public class RedisCofiguration{
@Bean
public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory){
log.info("开始创建redis模板类...");
RedisTemplate redisTemplate = new RedisTemplate();
// 设置key的序列化器,默认为JdkSerializationRedisSerializer
redisTemplate.setKeySerializer(new StringRedisSerializer());
// 设置redis的连接工厂对象
redisTemplate.setConnectionFactory(redisConnectionFactory);
return redisTemplate;
}
}
通过RedisTemplate对象操作Redis:
操作字符串类型:
@Autowired
private RedisTemplate redisTemplate;
redisTemplate.opsForValue().set("city","北京");
String city = (String)redisTemplate.opsForValue().get("city");
redisTemplate.opsForValue().set("code","1234",3,TimeUnit.MINUTES) // 设置过期时间3分钟
redisTemplate.opsForValue().setIfAbsent("lock","1");
操作哈希类型:
- 使用依赖注入,注入RedisTemplate对象;
- 使用redisTemplate对象中的opsForHash方法来操作哈希类型;
- 常用方法:
- key为哈希表,field为表中的字段名,value为字段对应的值;
- put(参数1,参数2,参数3):将哈希表key中的字段field的值设为value,参数1为key,参数2为field,参数3为value;
- get(参数1,参数2):获取存储在哈希表中指定字段的value,参数1为key,参数2为field;
- keys(参数):获取哈希表中的所有字段,参数为key;
- values(参数1):获取哈希表中所有值,参数为key;
- delete(参数1,参数2):删除存储在哈希表中的指定字段,参数1为key,参数2为fieId;
- 例子:
@Autowired
private RedisTemplate redisTemplate;
redisTemplate.opsForHash().put("100","name","tom");
String name = (String)redisTemplate.opsForHash().get("100","name");
redisTemplate.opsForHash().keys("100");
redisTemplate.opsForHash().values("100");
redisTemplate.opsForHash().delete("100","age");
操作列表类型:
- 使用依赖注入,注入RedisTemplate对象;
- 使用redisTemplate对象中的opsForList方法来操作列表类型;
- 常用方法:
- leftPushAll(参数1,参数2...):将多个值插入到列表头部,参数1为key(列表名),参数2开始为列表值,从参数2开始一个参数一个参数插入到列表头部;
- leftPush(参数1,参数2):将一个值插入到列表头部,参数1为key(列表名),参数2为列表值;
- range(参数1,参数2,参数3):获取列表指定范围内的元素,从零索引开始,最后的元素可以用-1索引,参数1为key(列表名),参数2为起始索引,参数3为结束索引;
- rightPop(参数):移除并获取列表最后一个元素,参数为key(列表名);
- size(参数):获取列表长度,参数为key(列表名);
- 例子:
操作集合类型:
- 使用依赖注入,注入RedisTemplate对象;
- 使用redisTemplate对象中的opsForSet方法来操作集合类型;
- 常用方法:
- add(参数1,参数2...):向集合添加一个或多个元素,参数1为集合名称,参数2开始为添加的元素;
- members(参数):返回集合中的所有元素,参数为集合名称;
- size(参数):获取集合的元素数量,参数为集合名称;
- intersect(参数1,参数2):返回给定所有集合的交集,参数1和参数2为不同的集合;
- union(参数1,参数2):返回给定集合的并集,参数1和参数2为不同的集合;
- remove(参数1,参数2...):删除集合一个或多个元素,参数1为集合名称,参数2开始为删除的元素;
- 例子:
操作有序集合类型:
- 使用依赖注入,注入RedisTemplate对象;
- 使用redisTemplate对象中的opsForZSet方法来操作有序集合类型;
- 常用方法:
- add(参数1,参数2,参数3):向有序集合添加一个元素和用于排序的分数,参数1为集合名称,参数2为添加的元素,参数3为元素对应的分数;
- range(参数1,参数2,参数3):通过索引区间返回有序集合中指定区间内的成员,参数1为集合名称,参数2为起始索引,参数3为结束索引;
- incrementScore(参数1,参数2,参数3):有序集合中对指定成员的分数加上增量,参数1为集合名称,参数2为增值的元素,参数3为增值的数量;
- remove(参数1,参数2...):移除有序集合中的一个或多个成员;参数1为集合名称,参数2开始为删除的元素;
- 例子:
通用操作:
- 使用依赖注入,注入RedisTemplate对象;
- 直接使用redisTemplate对象中的方法即可;
- 常用方法:
- keys(参数):查找所有符合给定模式(pattern)的key,参数为给定模式,*号为通配符;查出的数据需要遍历;
- hasKey(参数):检查给定key是否存在,参数为key;
- delete(参数):在key存在时删除key,参数为key;
- 例子:
标签:Redis,
数据库,
redis,
列表,
参数,
key,
集合,
redisTemplate
From: https://www.cnblogs.com/chj020415/p/18225758