目录
介绍
Redis默认端口号为6379
Redis提供了16个数据库,默认使用0号数据库,更改数据库使用select 几号
Redis的数据存储在内存中
下载安装:
启动与停止:
Linux中启动Redis服务:
进入src目录,输入./redis-server
如何让Redis服务后台运行:
修改配置文件vim redis.conf
查找daemonize
将no改为yes
启动的时候需要显示的加载配置文件:src/redis-server redis.conf
设置密码:
在redis.conf文件中查找requirepass,本来requirepass是被注释的也就是不需要密码,我们把注释去掉然后将默认的密码改为123456
进入redis
远程连接:
1、linux系统中修改redis.conf文件
2、底线命令模式输入/bind,查找绑定的ip
3、然后重启redis服务
4、在windows系统中redis个目录下输入:redis-cli.exe -h 主机地址 -p 端口 -a 密码
注意:记得关防火墙,并且redis需要设置密码
常用数据类型
Redis存储数据类似于map存储数据,可以看做不同的数据类型为不同的map,不同的map的存放逻辑不同
常用命令
字符串string
Redis中字符串常用命令:
SET key value | 设置指定key的值 |
GET key | 获取指定key的值 |
SETEX key seconds value | 设置指定key的值,并设置key的存活时间(单位为秒s) |
SETNX key value | 只有在key不存在时设置key的值 |
哈希hash
Redis中hash的常用命令:
HSET key field value | 将哈希表key中的字段field的值设置为value |
HGET key field | 获取存储在哈希表中的指定字段的值 |
HDEL key field | 删除存储在哈希表中指定字段 |
HKEYS key | 获取哈希表中指定key的所有字段 |
HVALS key | 获取哈希表中指定key的所有值 |
HGETALL key | 获取在哈希表中指定字段的key的所有字段和值 |
列表list
Redis列表是类似双向链表的结构,按照插入顺序排序,常用命令:
LPUSH key value [..values] | 将一个或多个值插入到列表头部 |
LRANGE key start stop | 获取列表指定范围内的元素(lrange key 0 -1获取所有元素) |
RPOP key | 移除并获取列表最后一个元素 |
LPOP key | 移除并获取列表第一个元素 |
LLEN key | 获取列表的长度 |
BRPOP key1 [..keys] timeout | 移除并获取列表最后一个元素,如果列表没有元素会堵塞列表直到等待超时或发现可弹出元素位置 |
无序集合set
Redis set是string类型的无序集合。集合成员是唯一的,集合中不能出现重复的数据:
SADD key member1 [..members] | 向集合中添加一个或多个成员 |
SMEMBERS key | 返回集合中的所有成员 |
SCARD key | 返回集合中的成员数 |
SINTER key1 [..keys] | 返回给定所有集合的交集 |
SUNION key1 [..keys] | 返回给定所有集合的并集 |
SDIFF key1 [..keys] | 返回给定所有集合的差集(key1 - key2……) |
SREM key member1 [..members] | 删除指定集合的一个或多个成员 |
有序集合zset
Redis sorted set 有序集合是string类型元素的集合,且不重复的成员。每个元素都会关联一个double类型的分数(score)。redis正是通过分数来为集合中的成员进行从小到大排序。有序集合成员是惟一的,但分数却可以重复
ZADD key score1 member1 [score2 member2…] | 向有序集合中添加一个或多个成员,或者更新已存在成员的分数 |
ZRANGE key start stop [WITHSCORES] | 返回有序集合指定区间的成员 |
ZINCRBY key increment member | 对指定成员的分数增加increment |
ZREM key member [..members] | 移除有序集合中的一个或多个成员 |
通用命令:
KEYS pattern | 查找所有符合给定参数的key |
EXISTS key | 检查指定key是否存在 |
TYPE key | 返回指定key的类型 |
TTL key | 返回指定key的存活时间 |
DEL key | 删除指定key |
在Java中操作redis
使用Jedis操作Redis:
步骤:
1、引入依赖
<dependencies>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.8.0</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
2、创建连接
3、执行具体操作
4、关闭连接
SpringDataRedis操作Redis
0、添加依赖:
<!--springdataredis-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
1、修改配置文件
spring:
#Redis相关配置
data:
redis:
host:localhost
port:6379
#password:123456
database:0#操作的是0号数据库
jedis:
#Redis连接池配置
pool:
max-active:8#最大连接数
max-wait:1ms#连接池最大阻塞等待时间
max-idle:4#连接池中的最大空闲连接
min-idle:0#连接池中的最小空闲连接
2、修改配置类,springdataredis默认提供序列化器会导致放进去的key被序列化成别的样子
/**
*Redis配置类
*/
@Configuration
public class RedisConfig extends CachingConfigurerSupport{
@Bean
public RedisTemplate<Object,Object> redisTemplate(RedisConnectionFactory connectionFactory){
RedisTemplate<Object,Object>redisTemplate=newRedisTemplate<>();
//默认的Key序列化器为:JdkSerializationRedisSerializer
redisTemplate.setKeySerializer(newStringRedisSerializer());
redisTemplate.setHashKeySerializer(newStringRedisSerializer());
redisTemplate.setConnectionFactory(connectionFactory);
return redisTemplate;
}
}
3、自动注入redisTemplate对象,只要引入了SpringDataRedis依赖spring容器中就会有该对象
4、通过redisTemplate提供的opsFor+数据类型()方法设置数据
SpringCache整合Redis
框架介绍:
常用注解:
想要SpringCache使用哪个缓存技术就引入哪个依赖,如果使用redis就引入SpringCache和Redis的依赖
注解的属性:
value:缓存的名称
key:缓存的key
使用:
SpringCache整合Redis:
1、导入maven坐标
spring-boot-starter-data-redis、spring-boot-starter-cache
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
2、配置application.yml
spring:
cache:
redis:
time-to-live: 1800000
3、启动类上方加入@EnableCaching注解,开启缓存注解功能
4、在Controller的方法上方加入@Cacheable、@CacheEvict等注解,进行缓存功能