Redis
前言
启动程序和客服端程序
-
启动程序:redis-serve.exe (使用redis前需要先启动程序)
-
客服端程序:redis-cli.exe (用于编写redis命令)
redis默认有多少个数据库
-
redis默认有16个数据库,默认从第0个开始使用。数据库名称就是0-15
安装
Linux环境下
-
下载链接Download | Redis
-
将安装包上传到 /usr/local 目录下
-
解压缩:tar -zxvf redis-7.0.2.tar
-
redis需要依赖于c++环境:yum install gcc-c++
-
查看gcc版本:gcc -v
-
编译:make
-
安装:make install
-
安装完成后redis的启动文件和其他一些文件都是安装到/usr/local/bin目录下的。
-
将解压后的文件中的redis.conf复制一份到/usr/local/bin,并命名为 myRedis.conf
[root@localhost bin]# cp /usr/local/redis-7.0.2/redis.conf myRedis.conf
-
指定redis是用守护线程的方式启动: vim myRedis.conf 修改daemonize为yes
-
在/usr/local/bin目录下启动redis服务:redis-server myRedis.conf
-
进入客服端:redis-cli
-
测试链接是否成功:ping如果执行ping命令后返回pong就表示已经连接成功了
-
关闭redis服务器:shutdown
-
退出:exit
常用命令
redis常用命令 命令建议用大小,该文为了容易阅读我用的小写
命令 | 解释 |
---|---|
keys * | 查看当前数据库所有的key |
set key value | 设置key,值为value,如果健存在就相当于改变值 |
move key 1 | 将key移动到数据库1 |
select 1 | 进入数据库1 |
exists key | 是否存在key 0 不存在 1存在 |
del key6 | 删除key |
expire key 40 | 设置key的过期时间为40秒 |
ttl key | 查key剩余过期时间 -2 已过期 -1 未设置过期时间 |
get key | 查看key的值,过期的key会被自动删除(nil) |
type key | 查看key的数据类型 |
rename key key2 | 将key重命名为key2,如果key2存在,则会覆盖key2 |
renamenx key key2 | 当key2不存在的时候,将key重命名为key2 |
flushdb | 清空当前库所有key |
flushall | 清空整个 Redis 服务器的数据 |
五大数据类型
String类型
String类似的使用场景:value除了是字符串还可以是数字,用途举例:
-
计数器
-
统计多单位的数量:uid:123666:follow 0
-
粉丝数
-
对象存储缓存
常用命令
命令 | 解释 |
---|---|
append key str | 给key的value拼接str,结果会输出拼接后的字符串长度 |
incr key | 给值为Integer的key数值+1 |
decr key | 给值为Integer的key数值-1 |
incrby key 5 | 给值为Integer的key数值+5 (这种方式可以指定增加步长) |
decrby key 5 | 给值为Integer的key数值-5 (这种方式可以指定减少步长) |
incrbyfloat key 5.2 | 给key的数值+5.2 (整数加小数的话会损失精度),负数则为减 |
strlen key | 获取key value的长度 |
getrange key 3 6 | 查看value 3到6的字符串(3到6都取),value的值不会被改变 |
setrange key 2 xxx | 将value的第3位到(2+xxx的长度)位的字符串变为xxx |
getset key xxx | 查看key的旧value,并设置新value为xxx |
setnx key value | 当key不存在的时候创建key,并设置值为value(常用于分布式锁中) |
psetex key 100000 v | 设置key的值为v,过期时间为100000毫秒 |
setex key 10 value | 设置key的值为value,过期时间为10秒 |
mset k1 v1 k2 v2 k3 v3 | 批量设置键值对(如果key存在就会修改key的值) |
msetnx k1 v1 k2 v2 | 批量设置键值对(有一个重复的健,都不会执行) |
mget k1 k2 k3 | 批量查询键值对 |
命令使用技巧
-
通过mset命令设置对象信息,mget命令查询对象信息
mset user:1:name zhangsan user:1:age 2 mget user:1:name user:1:age #这样就查询出了用户1的姓名和年龄
List类型
-
list实际就是一个链表,在两边插入或者改动值,效率最高!修改中间元素,效率相对较低。
-
list是有序可以重复的。
常用命令 下面的list表示集合名称
命令 | 解释 |
---|