环境为Ubuntu18.04.
1、安装redis
1.1 linux安装redis
使用 apt 从官方 Ubuntu 存储库来安装 Redis
# 可以使用 apt list | grep redis-server查看下redis的版本,若不是最新版可以用apt update 更新
$ sudo apt install redis-server
1.2 基于docker安装redis
1.2.1基于centos通过docker安装redis
# 安装redis 此方法默认安装最新版本
docker pull redis
# 通过后台运行redis
docker run -d -p 6379:6379 --name redis redis:latest
# 挂载的方式启动redis
docker run --restart=always --log-opt max-size=100m --log-opt max-file=2 -p 6379:6379 --name redis -v /home/redis/redis.conf:/etc/redis/redis.conf -v /home/redis/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes --requirepass 123456
# 验证 通过命令进入容器并通过客户端测试
docker exec -it <容器名> /bin/bash
redis-cli
# 停止redis
docker stop redis
# 重启redis
docker restart redis
2、配置redis
配置远程连接,需要在阿里云控制台配置端口
$ sudo vi /etc/redis/redis.conf
# 在文件中,找到supervised指令。 该指令允许您声明一个init系统来管理Redis作为服务,从而为您提供对其操作的更多控制。 受supervised指令默认设置为no 。 由于您正在运行使用systemd init系统的Ubuntu,请将其更改为systemd
supervised systemd
#配置远程连接
将 bind 127.0.0.1 ::1 改为 bind 0.0.0.0
#设置密码(对于自己本地使用,无需设置,服务器上还是设置比较好)
requirepass 123456
配置后,需要重启服务
service redis restart
主要参考:ubuntu 18.04 安装 Redis · 王鑫的个人博客 (wangxin1248.github.io)
3、redis常用命令
#登录客户端
$ redis-cli -h host -p port -a password
# 启动redis
$ sudo service redis start
# 停用redis
$ sudo service redis stop
# 重启redis
$ sudo service redis restart
# 选择数据库
select 0
# 清空当前数据库
flushdb
# 清空全部数据库
flushall
# 设置键
set a hello
# 获取键
get a
# 获取全部的键
keys *
# 获取键的总数
dbsize
# 查看键是否存在
exists key
# 删除键(可写多个key)
del key
# 重命名键
rename key1 key2
3.1 基本数据类型
String、Hash、Set、List、zset、geo、Hyperloglog、streams
3.1.1 String
可用于存储 字符串、int、float 类型
# 获取key中指定范围的数据
getrange key 0 1
# 获取值的长度
strlen key
#在值后面追加内容
append key value
#设置多个值 (批量操作)
mset key1 value1 key2 value2
#获取多个值
mget key1 key2
#设置值,如果存在则失败,否则成功(基于此可以实现分布式锁,del key 来释放锁)
setnx key value
#或 通过参数设置,增加有效时间 EX秒 PX 毫秒
set key value PX 10 NX
#整数值递增 默认自增一
incr key
incrby key 10
# 自减
decr key
decrby key 10
#浮点数增加
INCRBYFLOAT key 10.2
3.1.2 HASH
HASH的value只能是字符串
应用:购物车 key存储用户id field 存储商品 value 存储 商品数量
# HASH设置值
hset key field value
hmset key field1 value1 field2 value2
# HASH 获取值
hget key field
hmget key filed1 field2
# 获取全部的field
hkeys key
# 获取key中的所有值
hvals hash
#获取全部的field和value
hgetall key
#删除一个field
hdel key field
# 获取field 的数量
hlen key
3.1.3 List
存储有序的字符串,元素可以重复 ,是一个双向链表,可以从左(left)或者右(right)操作
应用:用户消息队列、网站的公告列表、活动列表
#添加元素
lpush queue a
lpush queue a b
rpush queue d
# 获取元素并从列表中删除
lpop queue
rpop queue
# 获取元素
lindex 0
lrange 0 -1 (获取全部)
3.1.4 Set
存储string的无序集合
应用:抽奖、点赞、打卡、商品标签及筛选
# 添加一个或多个元素
sadd key a b c
# 获取全部元素
smember key
# 获取元素个数
scard key
# 随机获取一个元素 或多个 count
srandmember key count
# 随机弹出一个元素
spop key
# 删除一个或多个元素
srem key a
# 查看元素是否存在
sismember key a
# 获取集合差集(会受到集合的先后顺序影响)
sdiff set1 set2
# 获取集合并集
sunion set1 set2
# 获取集合交集
sinter set1 set2
3.1.5 Zset
有序集合,每个元素有个score,根据score从小到大排序
应用:顺序会动态变化的队列,如排行榜、热搜
# 添加元素
zadd zset 10 a 20 b 30 c
# 获取全部元素
zrange zset 0 -1 withscores
zrevrange zset 0 -1 withscores
zscore zset a
zrank zset a
# 获取分数区间内的元素 []
zrangebyscore zset 20 30
# 移除元素 可以根据key score rank 进行移除
zrem zset a
#统计元素个数
zcard zset
#分值递增
zincrby zset 5 a
# 根据分值统计个数
zcount zset 20 30
3.1.6 其他数据结构介绍
bitmaps:是在字符串类型上定义的位操作,可以进行按位与、或、非等操作,也可以单独操作一位。
应用:可以用来做大数据量的统计,如在线用户统计,留存用户统计
Hyperloglogs: 提供了一种不太精确地基于基数的统计方法,用来统计一个集合中不重复数据的个数。如统计网站的uv、日活、月活等
geo:用来储存经纬度信息,可以计算距离
更多命令请查看官网