概述
参考菜鸟教程:https://www.runoob.com/redis/redis-tutorial.html
下载 & 安装
下载
下载地址:http://www.redis.cn/download.html
安装
下面以安装在Linux系统为例进行演示。
# 解压安装包
tar -xf redis-5.0.4.tar.gz
# 安装gcc(需要联网,可先使用 gcc -v 命令查看系统是否已安装gcc)
yum -y install gcc
# 进入Redis目录,进行编译
make
# 编译后进行安装
make install
安装后的操作
后台运行
# 编辑Redis配置文件
vim /opt/redis-5.0.4/redis.conf
# 设置后台运行
daemonize yes
# 开启Redis远程访问,将下面这行注释掉
# bind 127.0.0.1
# 这行表示只有bind的IP地址才能访问redis
# 将protected-mode设置为no
protected-mode no
# 修改默认密码
# 在配置文件中找到下面这一行
# requirepass foobared
# 另起一行设置自己的密码,例如:
requirepass 123456
# 进入 /usr/local/bin/ 目录
cd /usr/local/bin/
# 以配置文件的方式启动
redis-server /opt/redis-5.0.4/redis.conf
关闭
# 进入 /usr/local/bin/ 目录
cd /usr/local/bin/
# 单实例关闭
redis-cli shutdown
# 多实例关闭
redis-cli -p 6379 shutdown
常用操作
# 进入 /usr/local/bin/ 目录
cd /usr/local/bin/
# 连接Redis客户端,连接后可输入 ping 进行测试,正常情况下会响应 PONG
redis-cli
# 性能测试,需要我们手动停止(Ctrl+C)
redis-benchmark
客户端常用命令
Redis客户端支持命令补全(Tab)。
命令的返回值为1表示true,0表示false。
- 参考网址1:http://redisdoc.com/
- 参考网址2:http://doc.redisfans.com/
命令 | 说明 |
---|---|
select 数据库编号 | 切换数据库,编号0~15 ,共16个 |
dbsize | 查询数据库中键的数量 |
flushdb | 清空当前数据库 |
flushall | 清空所有(16个)数据库 |
keys * | 模糊查询key,支持通配符:* :通配任意多个字符? :通配任意单个字符[] :通配括号内的某一个字符 |
exists key | 判断key是否存在 |
move key 库编号 | 移动key到其他库 |
ttl key | 查看key的过期时间 -1:永不过期 -2:已过期 |
expire key 秒 | 为key设置过期时间(生命倒计时) |
type key | 查看key的数据类型 |
字符串String
命令 | 说明 |
---|---|
set key value | 保存数据 |
get key | 获取数据 |
del key | 删除key |
append key value | 在key的数据后追加value值,返回此时key值的总长度 |
strlen key | 返回key值的长度 |
incr key | key自增1(相当于key++ ) |
decr key | key自减1(相当于key-- ) |
incrby key x | key自增x(相当于key+=x ) |
decrby key x | key自减x(相当于key-=x ) |
getrange key x y | 查询key的值,范围是下标x ~ 下标y(包含xy) |
setrange key x abc | 设置key的值,从下标x开始设置为abc |
setex key x value | 添加数据的同时设置x秒的过期时间 |
setnx key value | 添加数据时判断key是否已存在,若存在则添加失败 |
mset k1 v1 k2 v2 k3 v3 ... | 同时添加多条数据 |
mget k1 v1 k2 v2 k3 v3 ... | 同时获取多条数据 |
msetnx k1 v1 k2 v2 k3 v3 ... | 同时添加多条数据时,先判断数据是否存在,若有一条存在则添加失败 |
列表List
左 = 上
右 = 下
性能:头尾操作效率高,中间操作效率低。
命令 | 说明 |
---|---|
lpush list 1 2 3 | 从左向右往list添加数据123 |
rpush list 1 2 3 | 从右向左往list添加数据123 |
lrange list x y | 查询list中下标x至下标y的数据lrange list 0 -1 :查询list中的全部数据 |
lpop list | 从左边移除第一个元素 |
rpop list | 从右边移除第一个元素 |
lindex list x | 从上往下数,查询list中下标为x的元素 |
llen list | 返回list的长度 |
lrem list x y | 从list中删除x个y |
ltrim list x y | 截取list中下标x~y的元素,其他元素全部删除 |
rpoplpush list1 list2 | list1右边移除一个元素,从左进入到list2中 |
lset list x y | 将list中下标为x的元素设置为y |
linsert list before/after x y | 在list中的x元素前/后插入y元素 |
集合Set
与Java中的Set类似,Set集合中的数据不允许重复。
命令 | 说明 |
---|---|
sadd set 1 2 3 | 向set中添加元素123 |
smembers set | 查询set中的所有元素 |
sismember set x | 判断set中是否存在x元素 |
scard set | 获取set中的元素个数 |
srem set x | 移除set中的x元素 |
srandmember set x | 从set中随机获取x个元素 |
spop set | 随机移除set中的一个元素 |
smove set1 set2 x | 将set1中的元素x移动到set2中 |
sinter set1 set2 | 查询set1和set2中所有元素的交集 |
sunion set1 set2 | 查询set1和set2中所有元素的并集 |
sdiff set1 set2 | 查询set1和set2中所有元素的差集(在set1中存在,set2中不存在) |
哈希Hash
类似Java中的
Map<String, Object>
;
KeyValue模式不变,但Value是一个键值对。
命令 | 说明 |
---|---|
hset user id 01 | 添加user ,值为id=01 |
hsetnx user age 18 | 添加user 前判断age 是否存在,若存在则添加失败 |
hget user id | 查询user 的id (必须携带id ,否则会报错) |
hmset user id 01 name tom age 18 | 添加user ,并批量设置属性 |
hmget user name age | 获取user 的name 和age 属性 |
hgetall user | 获取user 的全部信息 |
hdel user age | 删除user 的age 属性 |
hlen user | 返回user 的属性数量 |
hexists user name | 判断user 中是否存在name 属性 |
hkeys/hvals user | 获取user 中所有的属性名/属性值 |
hincrby/hincrbyfloat user money x | user 中的money 属性增加x (整数/小数) |
有序集合Zset
命令 | 说明 |
---|---|
zadd zset 10 vip1 20 vip2 30 vip3 40 vip4 50 vip5 | 添加数据 |
zrange zset 0 -1 [withscores] | 查询zset 中的所有数据[带着分数查询] |
zrevrange zset 0 -1 | 查询zset 中的所有数据(逆序) |
zrangebyscore zset [(]20 [(]40 [limit x y] | 查询zset 中20~40 之间的数据(包含20跟40)(20 (40 :不包含20跟40limit x y :跳过x 个,取y 个 |
zrevrangebyscore zset 40 20 | 查询zset 中40~20 之间的数据(逆序) |
zrem zset vip1 | 移除zset 中的vip1 |
zcard zset | 查询集合中元素的个数 |
zcount zset 20 30 | 查询分数在20~30之间的元素数量 |
zrank zset vip2 | 查询zset 中vip2 的下标 |
zrevrank zset vip2 | 查询zset 中vip2 的下标(逆序) |
zscore zset vip2 | 查询zset 中vip2 的分数 |