Redis的安装与使用
Redis可以安装在Window,也可以安装在Linux,强烈建议安装在Linux。
Redis官网:https://redis.io/
Redis中文网:http://www.redis.cn/
windows的安装
- 下载地址:https://github.com/MicrosoftArchive/redis/releases
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-S9bj8WSh-1611747859133)(file:///C:\Users\75041\AppData\Local\Temp\ksohtml6808\wps1.jpg)]
- 解压
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YmvNGp35-1611747859135)(file:///C:\Users\75041\AppData\Local\Temp\ksohtml6808\wps2.jpg)]
- 启动Redis服务
双击redis-server.exe,保持窗口不要关闭。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iEoT65Wq-1611747859138)(file:///C:\Users\75041\AppData\Local\Temp\ksohtml6808\wps3.jpg)]
- 测试
双击redis-cli.exe,启动Redis客户端
Linux的安装
进入下载页面:https://redis.io/download,选择最新版本下载。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-l64mS1mT-1611747859144)(file:///C:\Users\75041\AppData\Local\Temp\ksohtml6808\wps4.jpg)]
下载完成以后放到Linux服务器上
安装
解压:
tar -zxvf redis-6.0.9.tar.gz
编辑
进入解压后的redis目录,然后执行make命令
cd redis-6.0.9make
*可执行文件* | *作用* |
---|---|
redis-server | 启动Redis |
redis-cli | redis命令行客户端连接工具 |
redis-benchmark | 基准测试工具 |
redis-check-aof | AOF持久化文件检测和修复工具 |
redis-check-dump | RDB持久化文件检测和修复工具 |
redis-sentinel | 启动哨兵 |
redis-trib.rb | 集群构建工具 |
修改配置
修改redis-6.0.9/redis.conf文件
#设置客户端连接密码(默认没有密码)requirepass foobared #注释掉#bind 127.0.0.1 #从库要复制时需要保持跟主库一样的密码,否则无法复制。masterauth redis@root
启动服务
src/redis-server redis.conf &
src/redis-server redis-server命令文件
redis.conf 配置文件
& Linux命令,表示后台运行
查看版本
1.查看客户端版本
src/redis-cli -v #-v 或者 --version
返回结果:redis-cli 6.0.9
2.查看服务端版本
src/redis-server -v #-v 或者 --version
返回结果:Redis server v=6.0.9 sha=00000000:0 malloc=jemalloc-5.1.0 bits=64 build=619dddaf7f10f831
注意:redis-cli和redis-server一般都是从同一套源码编译出的,所以应该是一样的。
建立客户端连接
src/redis-cli -a foobared -p 6379
src/redis-cli Redis连接客户端命令文件
-a 指定连接密码(默认没有密码)
-p 指定redis端口(6379)
-h 指定IP(默认127.0.0.1)
也可以先指定端口,连接Redis后再用auth命令输入密码:(推荐)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ab3rEoOF-1611747859148)(file:///C:\Users\75041\AppData\Local\Temp\ksohtml6808\wps5.jpg)]
快速入门
基本命令
set name zhangsan
set name zhangsa EX|PX 1 ex表示秒 px表示毫秒
expire name 10 给key设置过期时间
get name 获取key的值
del name 删除key
ttl name 查看key的生命周期
flushdb 清空当前库
flushall 清空所有库
select 1 切换库
dbsize 查询库里key 的个数
keys * 查看所有key
exists name 判断key是否存在
move name 1 移动某个key到指定库
String操作
增加判断
setnx name a 设置name=a 如果有就失败
setex name 10 a 设置key为name value为a 10秒存储时间
批量增加
mset key1 value1 key2 value2
msetnx key1 value1 … 原子性操作 判断批量插入 如果有一个key存在 所有都失败
批量获取key
mget key1 key2
字符串拼接
append name aa
字符串截取
getrange name 0 2 包含开始结束 0 -1 截取所有 不会改变原有字符串
替换
setrange name 4 mm 从4下标 替换字符mm
获取旧值设置新值
getset name a
查看字符串字节大小
strlen name 汉字3字节 字母数字1字节
数字加减
增加
incr age
incrby age 10
incrbyfloat age 0.1
减少
decr age
decrby age 10
List操作
Redis的list是双向链表结构,有顺序可重复,一个list最多可存2的32次方-1个元素
常用命令
类型 | 指令 |
---|---|
添加 | rpush lpush linsert |
查 | lrange lindex llen |
修改 | lset |
删除 | lpop rpop lrem ltrim |
删除(阻塞) | blpop brpop |
添加
rpush list a b c d 往右边添加元素返回个数
lpush list a b c d 往左边添加元素放回个数
linsert list before|after a 1 往a元素前面或后面添加1 如果没有a元素则添加失败
lrange list 0 -1 查看数组内所有元素 -1表示最后
lindex list 1 查看指定索引元素
lset list 0 aa 修改集合中指定索引数据
llen list 查看集合大小
lpop list 从左边弹出一个元素
rpop list 从右边弹出一个元素
lrem list 2 a 从集合的左边删除两个a元素 0表示删除所有
blpop list 60 阻塞移除一个元素 60内没删除就一直阻塞
Set集合操作
set保存多个元素,里面的元素是无序不重复,存储容量与list一致,可支持取集合中的交并差集
Set常用命令
类型 | 命令 |
---|---|
判断 | exists sismember |
添加 | sadd |
查询 | smembers srandmember scard |
删除 | srem spop |
交集 | sinter |
并集 | sunion |
差集 | sdiff |
集合结果另存队列 | sinterstore sunionstore sdiffstore |
sadd set a b c 返回个数 追加也用sadd
sismember set a 判断set中是否存在 a
smembers set 查询所有
srandmember set 2 随机返回两个
scard set 返回个数
srem set a b 删除两个或多个元素返回删除个数
spop set 1 随机删除一个元素并返回
应用场景:抽奖
sinter set set1 取集合交集
sinterstore myset set set1 取set set1中的交集存到myset集合
sunion set set1 集合set set1去重合并
sunion myset set set1 集合set set1去重合并后存储到myset
sdiff set set1 取set set1集合中的差集 set集合中元素在set1集合中不存在 才保存
sdiffstore myset set set1 取set set1集合中的差集并保存到myset
Zset
zset 是可以排序的不重复集合 可以重复的是分数值,可以通过分数值排序
类型 | 指令 |
---|---|
添加 | zadd |
修改分值 | zincrby |
删除 | zrem |
查询 | zcard zscore zcount zrange zrank zrevrank zrangebyscore zrevrangebyscore |
交集 | zinterstore |
zadd scope 100 zl 90 xy bw 90 dcm 90 添加一个scope的key 里面存储着一堆带有分数的value 。 分值在前 value在后
zincrby scope 10 zl 给zl加10分
zadd scope incr -5 zl 给zl减5分 同时也可以增加
zrem scope zl 删除scope中的zl元素
zrange scope 0 -1 查看所有value 默认升序 加上withscores可查看分数
zscore scope zl 查看指定值的分数
zcount scope 60 100 返回分值在这之间的个数
zrangebyscore scope 60 100 升序显示60-100之间的元素
zrevrangebyscore scope 100 60 倒序显示60-100之间的元素
zrangebyscore scope -inf +inf withscores limit 0 2 升序查看所有元素包含分值 带分页从0开始查两条
Hash集合
hash是一个 spring类型的 field和value的映射表 适合存储对象,每个hash 可以存储 2的32次方-1个键值对(40多亿)
类型 | 命令 |
---|---|
添加 | hset hmset |
查询 | hget hmget hkyes hvals hgetall hlen hstrlen |
删除 | hdel |
判断 | hexists |
自增 | hincrby hincrbyfloat |
hset user:1 id 1 name zhangsan age 1
6.0之前 hset只能设置单个field value
追加也用hset field value 设置重复的字段会覆盖
hmset user:1 id 1 name zhangsan age 1
批量添加field value 如果field有重复就覆盖
hget user:1 id 获取单个field的值
hmget user:1 id name sex 批量获取field
hkeys user:1 查看所有key
hvals user:1 查看所有value
hgetall user:1 查看所有key与value
hlen user:1 查看字段个数
hstrlen user:1 id 查看某个字段占多少字节
常见问题
gcc命令没找到 解决办法
1、安装gcc
yum -y install gcc
2、删除redis-6.0.9目录,重新解压,重新编译
structredisServer没有名为xxx的成员解决办法
1、 安装gcc套装
yum install cpp
yum install binutils
yum install glibc
yum install glibc-kernheaders
yum install glibc-common
yum install glibc-devel
yum install gcc
yum install make
2、 升级gcc
yum -y install centos-release-scl
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
scl enable devtoolset-9 bash
disServer没有名为xxx的成员解决办法**
1、 安装gcc套装
yum install cpp
yum install binutils
yum install glibc
yum install glibc-kernheaders
yum install glibc-common
yum install glibc-devel
yum install gcc
yum install make
2、 升级gcc
yum -y install centos-release-scl
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
scl enable devtoolset-9 bash
3、删除redis-6.0.9目录,重新解压,重新编译