Redis的基础篇
1.在CentOs7上安装Redis(最好不要在windows上装,版本少)
1.安装gcc --> `yum install gcc tcl`
(可能会报错,重新安装yum就行了)
2.下载redis --> 最好是6.2上的版本
3.解压redis --> `tar -zxvf redis-6.2.x.tar.gz`(放在/usr/local/src下)
4.cd redis6.2.x , make && make install
一些常见的命令
- redis-cli:是redis提供的命令行客户端
- redis-server:是redis的服务端启动脚本
- redis-sentinel:是redis的哨兵启动脚本
2. 启动redis
我们这里选择开机自启
1.在redis6.2.x的目录下,配置redis.conf
2.# 允许访问的地址,默认是127.0.0.1,会导致只能在本地访问。 修改为0.0.0.0则可以在任意IP访问,生产环境不要设置为0.0.0.0 bind 0.0.0.0
# 守护进程,修改为yes后即可后台运行 daemonize yes
# 密码,设置后访问Redis必须输入密码 requirepass 123456
3.启动redis , redis-server redis.conf
4.停止服务:redis-cli -u 123456 shutdown
`5.开机自启: vi /etc/systemd/system/redis.service `
内容是
[Unit]
Description=redis-server
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/bin/redis-server /usr/local/src/redis-6.2.6/redis.conf
PrivateTmp=true
[Install]
WantedBy=multi-user.target
6.# 启动 systemctl start redis
使用systemctl status redis 如果是active就是成功了
3. 一些错误
-
- 开放防火墙6379的端口,不然会连不上
-
- VM的CentOs7 的IP 会变,所以要设置为静态IP
-
- 如果是阿里云的服务器,要在安全组里面开放6379端口
-
- 端口可能被占用,可以用
netstat -tunlp | grep 6379
查看,使用kill -9 pid解决
- 端口可能被占用,可以用
4.使用redis(String , Hash , List , Set , ZSet , GEO , BitMap )
1.redis 的命令
keys * 查看所有的key
DEL key 删除key
EXISTS key 判断key是否存在
EXPIRE key seconds 设置key的过期时间
TTL key 查看key的剩余时间
2.String 类型的 (一般是用来简单的类型,如全局的生成唯一Id,或者对象转成Json)
set get
mset mget
incr 是自增1
incrby number 是自增number(可以是负数)
SETNX key value 如果key不存在则设置key的值为value
SETEX key seconds value 设置key的值为value,并设置过期时间
- 使用Redis的层级结构来去存储数据,可以使用
:
来分割,如user:1:info - 注意使用String 来存储对象,要使用Json来转换,使用JSONUtil.toJsonStr来转换
3.Hash 类型的 (一般是用来去存储对象,要去修改的数据或者要取出来的数据)
- 需要注意的是,使用hutool的BeanUtil.toBean方法,可以将hash转成对象,BeanUtil的beanToMap方法可以将对象转成hash
Hset Hget Hmset Hmget Hgetall Hkeys Hvals Hsetnx
4.List 类型的 (一般是用来去存储队列,如消息队列(后面会有讨论),栈,同种类型的参数,如店铺的分类类型)
lpush rpush lpop rpop lrange(-1,0)
- 注意Blpop Blpush 是阻塞的,可以设置超时时间,可以用来模拟消息队列
5.SET 类型的 (一般是用来去存储不重复的数据,如用户的喜欢的商品,用户的标签,用户的粉丝)
sadd smembers srem smembers
- 用户的交集,差集,并集--->sinter sidff sunion
6.ZSet 类型的 (一般是用来去存储有序的数据,如排行榜,用户的积分,点赞,使用Feed流时)
zadd zrange zrangebyscore zrem zcard zscore
用户的交集,差集,并集 与Set类似
5.在java(idea,springboot)使用redis
5.1 类别:jedis ,lettuce,Redission(用于分布式锁)
5.2 jedis (使用较少)
- <groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.7.0</version>
- 这里创建就不说了,可以Al生成
5.3 使用StringDataRedis
引入的依赖:spring-boot-starter-data-redis 与 commoms-pool2
配置的文件 : host ,port ,password
就可以使用@Autowire注入StringDataRedis来使用了
但是需要注意的是写入前会把Object序列化为字节形式,我们可以自定义RedisTemplate的序列化方式
用StringRedisTemplate就是String序列化器