Redis的基础篇
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-serverAfter=network.target[Service]Type=forkingExecStart=/usr/local/bin/redis-server /usr/local/src/redis-6.2.6/redis.confPrivateTmp=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 * 查看所有的keyDEL key 删除keyEXISTS key 判断key是否存在EXPIRE key seconds 设置key的过期时间TTL key 查看key的剩余时间
2.String 类型的 (一般是用来简单的类型,如全局的生成唯一Id,或者对象转成Json)
set get mset mget incr 是自增1incrby number 是自增number(可以是负数)SETNX key value 如果key不存在则设置key的值为valueSETEX 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序列化器