Redis安装指南

安装Redis

docker-compose.yml 文件

version: '3.1'
services:
  redis:
    image: daocloud.io/library/redis:5.0.7
    restart: always
    container_name: redis
    environment: 
      - TZ=Asia/Shanghai
        ports:
          - 6379:6379
docker-compose up -d

操作Redis

进去Redis容器的内部

docker exec -it 容器id bash

使用redis-cli命令连接Redis

图形化界面

推荐这个可视化工具,GitHub地址:https://github.com/qishibo/AnotherRedisDesktopManager/

常用的五种数据结构

key-string:一个key对应一个值

key-hash:一个key对应一个Map

key-list:一个key对应一个列表

key-set:一个key对应一个集合

key-zset:一个key对应一个有序的集合

用途

key-string:最常用的,一般用于存储一个值。

key-hash:存储一个对象数据的。

key-list:使用list结构实现栈和队列结构。

key-set:交集,差集和并集的操作。

key-zset:排行榜

string常用命令

# 添加值
set key value

# 取值
get key

# 批量操作
mset key value [key value...]
mget key [key...]
# 自增命令(+1)
incr key

# 自减命令(-1)
decr key

# 自增或自减指定数量
incrby key increment
decrby key increment
127.0.0.1:6379> set name zhangsan
OK
127.0.0.1:6379> get name
"zhangsan"
127.0.0.1:6379> set age 18
OK
127.0.0.1:6379> get age
"18"
127.0.0.1:6379> incr age
(integer) 19
127.0.0.1:6379> incr age
(integer) 20 
127.0.0.1:6379> decr age
(integer) 19
127.0.0.1:6379> incrby age 10
(integer) 29
127.0.0.1:6379> decrby age 5
(integer) 24

hash常用命令

# 存储数据
hset key field value

# 获取数据
hget key field

# 批量操作
hmset key field value [field value ...]
hmget key field [field ...]
# 自增(指定自增的值)
hincrby key field increment

# 设置值(如果key-field不存在,那么就正常添加,如果存在,什么事也不做)
hsetnx key field value

# 检查field是否存在
hexists key field

# 删除key对应的field,可以删除多个
hdel key field [filed ...]

# 获取当前的hash结构中的全部filed和value
hgetall key

# 获取当前hash结构中的全部filed
hkeys key

# 获取当前hash结构中的全部value
hvals key

# 获取当前hash结构中field的数量
hlen key
127.0.0.1:6379> hset person name xn2001
(integer) 1
127.0.0.1:6379> hset person age 18
(integer) 1
127.0.0.1:6379> hset person gender man
(integer) 1
127.0.0.1:6379> hget person
(error) ERR wrong number of arguments for 'hget' command
127.0.0.1:6379> hget person age
"18"
127.0.0.1:6379> hmget person name age gender
1) "xn2001"
2) "18"
3) "man"
127.0.0.1:6379> hmset animal one rabbit two monkey
OK
127.0.0.1:6379> hmget animal one two
1) "rabbit"
2) "monkey"
127.0.0.1:6379> hincrby person age 1
(integer) 19
127.0.0.1:6379> hdel person denger
(integer) 0
127.0.0.1:6379> hget person denger
(nil)
127.0.0.1:6379> hsetnx person height 120
(integer) 1
127.0.0.1:6379> hget person height
"120"
127.0.0.1:6379> hexists person height
(integer) 1
127.0.0.1:6379> hgetall person
1) "name"
2) "xn2001"
3) "age"
4) "19"
5) "gender"
6) "man"
7) "height"
8) "120"
127.0.0.1:6379> hkeys person
1) "name"
2) "age"
3) "gender"
4) "height"
127.0.0.1:6379> hvals person
1) "xn2001"
2) "19"
3) "man"
4) "120"
127.0.0.1:6379> hlen person
(integer) 4

list常用命令

# 存储数据(从左侧插入数据,从右侧插入数据)
lpush key value [value ...]
rpush key value [value ...]

# 存储数据(如果key不存在,什么事都不做,如果key存在,但不是list结构,什么都不做)
lpushx key value
rpushx key value

# 修改数据(在修改数据时,指定索引位置,会覆盖之前索引位置的数据,若index超出整个列表的长度会失败)
lset key index value

# 弹栈方式获取数据(左侧弹出数据,右侧弹出数据)
lpop key
rpop key

# 获取指定索引范围的数据(start从0开始,stop输入-1代表最后一个,-2代表倒数第二个)
lrange key start stop

# 获取指定索引的数据
lindex key index

# 获取整个列表的长度
llen key

# 删除列表中的数据(删除当前列表中count个value,当count>0,从左侧开始算起;但count<0,从右侧开始算起,当count==0删除全部value值)
lrem key count value

# 保留列表中的数据(保留指定索引范围内的数据,其他的都删除)
ltrim key start stop

# 将一个列表中的最后一个数据插入到另一个列表中的头部位置
rpoplpush list1 list2
127.0.0.1:6379> lpush list zhong1 zhong2 zhong3
(integer) 3
127.0.0.1:6379> rpush list zhong4 zhong5
(integer) 5
127.0.0.1:6379> lpushx list1 zhong6
(integer) 0
127.0.0.1:6379> lpushx list zhong6
(integer) 6
127.0.0.1:6379> lset list 3 zhong7
OK
127.0.0.1:6379> rpop list
"zhong5"
127.0.0.1:6379> lrange list 0 -1
1) "zhong6"
2) "zhong3"
3) "zhong2"
4) "zhong7"
5) "zhong4"
127.0.0.1:6379> lpop list
"zhong6"
127.0.0.1:6379> lindex list 3
"zhong4"
127.0.0.1:6379> llen list
(integer) 4
127.0.0.1:6379> lrange list 0 -1
1) "zhong3"
2) "zhong2"
3) "zhong7"
4) "zhong4"
127.0.0.1:6379> lrem list 0 zhong4
(integer) 1
127.0.0.1:6379> lrange list 0 -1
1) "zhong3"
2) "zhong2"
3) "zhong7"
127.0.0.1:6379> ltrim list 0 -2
OK
127.0.0.1:6379> lrange list 0 -1
1) "zhong3"
2) "zhong2"

set常用命令

# 存储数据
sadd key member [member ...]

# 获取数据
smembers key

# 随机获取一个数据(获取的同时,移除数据,count默认为1,代表弹出数据的数量)
spop key [count]

# 交集(获取多个集合的交集)
sinter set1 set2 ...

# 并集(获取全部集合中的数据)
sunion set1 set2 ...

# 差集(获取多个集合中不一样的数据)
sdiff set1 set2 ...

# 删除数据
srem key member [member ...]

# 查看当前的set集合是否包含这个值
sismember key member
127.0.0.1:6379> sadd it java python c c++ html css javascript jquery spring
(integer) 9
127.0.0.1:6379> smembers it
1) "jquery"
2) "java"
3) "c"
4) "css"
5) "html"
6) "javascript"
7) "python"
8) "c++"
9) "spring"
127.0.0.1:6379> spop it 2
1) "html"
2) "java"
127.0.0.1:6379> srem it html java
(integer) 0
127.0.0.1:6379> srem it css
(integer) 1
127.0.0.1:6379> sismember it css
(integer) 0
127.0.0.1:6379> sismember it spring
(integer) 1

zset常用命令

# 添加数据(score必须是数值,member不允许重复)
zadd key score member [score member ...]

# 修改member的score(如果member是存在于key中,正常增加分数,如果member不存在,这个命令相当于zadd)
zincrby key increment member

# 查看指定member的分数
zscore key member

# 获取zset中数据的变量
zcard key

# 根据score的范围查询member数量
zcount key min max

# 删除zset中的成员
zrem key member [member ...]

# 根据分数从小到大排序,获取指定范围内的数据(如果添加withscores参数,那么会返回member对应的分数)
zrange key start stop [withscores]

# 根据分数从大到小排序,获取指定范围内的数据(如果添加withscores参数,那么会返回member对应的分数)
zrevrange key start stop [withscores]

# 根据分数范围返回
zrangebyscore key min max [withscores]

key常用命令

# 查看Redis中的全部key(可以是*,xxx*,*xxx)
keys *

# 查看某一个key是否存在(1-key存在;0-key不存在)
exists key

# 删除key
del key [key ...]

# 设置key的生存时间,单位为秒
expire key second

# 设置key的生存时间,单位为毫秒
pexpire key millseconds

# 选择操作的库
select 0~15

# 移动key到另外一个库中
move key db

库常用命令

# 清空当前所在的数据库
flushdb

# 清空全部数据
flushall

# 查看当前数据库中有多少个key
dbsize

# 查看最后一次操作的时间
lastsave

# 实时监控Redis服务接收到的目录
monitor

Last modification:May 18, 2021
如果觉得我的文章对你有用,请随意赞赏