一,缓存数据库介绍
1,缓存数据库用处
1,提升访问速度
2,减少数据库访问过多导致负荷
2,常用的缓存数据库
Memcached:
优点:免费,知识分布式,支持多核多线程
缺点:支持的数据类型单一;数据量到了一定量且当时访问量也增加的时候,无持久化、节点故障可能出现缓存穿透、分布式需要客户端实现、跨机房数据同步困难、架构扩容复
杂度高。
Redis:
优点:数据类型丰富;在大数据面前,延时很低;
缺点:不支持多核多线程,但是可以使用多实例避免此情况
tair(淘宝开发)
优点:支持分布式,支持多核,数据类型丰富
缺点:生态系统做的不是很好(遇到问题百度搜索基本找不到,需要自己解决)
3,redis介绍
redis没有windows版本(一般服务器都是linus版本)
特点:
1,高性能(高速度读写);
2,数据类型丰富;
3,支持持久化;
4,回收策略(a=b,比如设置过期时间1小时,数据库更新a=c,1个小时候会重新去数据库读取最新数据);
5,支持简易版消息队列(支持阻塞式读取,可以很容易的实现
一个高性能的优先队列);
6,支持高可用(支持故障自动转移);
二,redis安装
官网 https://redis.io/
企业一般使用5. 版本(较稳定)
1,下载链接
[root@\ redis~]# wget https://download.redis.io/releases/redis-6.2.1.tar.gz
2,解压包
[root@\ redis~]# tar -xf redis-6.2.1.tar.gz -C /usr/local/
3,编译安装
(Redis 是跨平台的缓存服务器,所以在不同的平台上安装各异。一般情况下我们需要下载源码包带主机
上,然后解压并编译,从而得到 redis-server 启动文件)
[root@\ redis/usr/local/redis-6.2.1]# cd /usr/local/redis-6.2.1/
[root@\ redis/usr/local/redis-6.2.1]# yum -y install centos-release-scl
[root@\ redis/usr/local/redis-6.2.1]# yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
[root@\ redis/usr/local/redis-6.2.1]# scl enable devtoolset-9 bash
[root@\ redis/usr/local/redis-6.2.1]# make
[root@\ redis/usr/local/redis-6.2.1]# make PREFIX=/usr/local/redis install && make install
4,复制配置文件
[root@\ redis/usr/local/redis-6.2.1]# mkdir etc
[root@\ redis/usr/local/redis-6.2.1]# cp /usr/local/redis-6.2.1/redis.conf etc/
5,修改配置文件
[root@\ redis/usr/local/redis-6.2.1]# vim etc/redis.conf
...
daemonize yes # daemonize no修改为 daemonize yes
...
# 是否要用守护线程的方式启动
6,Redis 根目录下入环境变量
[root@\ redis/usr/local/redis-6.2.1]# vim ~/.bash_profile
...
# 增加以下
REDIS_HOME=/usr/local/redis-6.2.1
PATH=$PATH:$REDIS_HOME/bin
export PATH
[root@\ redis/usr/local/redis-6.2.1]# source ~/.bash_profile
7,注册 Redis 服务
[root@\ redis/usr/local/redis-6.2.1]# cat > /usr/lib/systemd/system/redis.service << EOF
[Unit]
Description=Redis
After=network.target
[Service]
Type=forking
PIDFile=/var/run/redis_6379.pid
ExecStart=/usr/local/redis-6.2.1/bin/redis-server /usr/local/redis-6.2.1/etc/redis.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
EOF
8,启动redis
[root@\ redis/usr/local/redis-6.2.1]# systemctl daemon-reload
[root@\ redis/usr/local/redis-6.2.1]# systemctl start redis
[root@\ redis/usr/local/redis-6.2.1]# systemctl status redis
9,连接
[root@\ redis/usr/local/redis-6.2.1]# redis-cli -h 127.0.0.1
命令行模式
# 进入命令行模式
redis-cli
# 参数
-h : 指定连接redis服务器的IP,默认是127.0.0.1
-a : 指定redis密码,默认redis没有密码
-p : 指定redis端口号,默认redis的端口号是6379
--raw : 支持中文
三,redis数据结构
1,字符串
#连接redis (默认本机,可修改配置bind)
[root@\ db03~]# redis-cli -h 127.0.0.1
# 设置数据
127.0.0.1:6379> set name zx
OK
127.0.0.1:6379> get name
"zx"
#设置过期时间为秒
127.0.0.1:6379> set name zxx ex 10
OK
127.0.0.1:6379> ttl name
(integer) 3 # 还剩3秒过期
127.0.0.1:6379> ttl name
(integer) -2 # -2代表过期
# set 和 ex 合并成 setex
127.0.0.1:6379> setex name 5 zx
OK
# 设置过期时间为毫秒
127.0.0.1:6379> set name zx px 20
OK
127.0.0.1:6379> psetex name 20 zx
OK
2,
Nx:当 key 不存在时创建,已存在则忽略。
Xx:当 key 存在则更新,不存在则忽略。
127.0.0.1:6379> set name zxx nx
OK
127.0.0.1:6379> set name zxx nx
(nil)
127.0.0.1:6379> setnx age 18 #合并使用
(integer) 1
127.0.0.1:6379> set agee 11 xx
(nil)
127.0.0.1:6379> set name zxx xx
OK
3,批量设置(查询)
# mset 设置多个值
127.0.0.1:6379> mset key1 value1 key2 value2
OK
# 获取多个值
127.0.0.1:6379> mget key1 key2
1) "value1"
2) "value2"
4,删除数据
127.0.0.1:6379> del age
(integer) 1
127.0.0.1:6379> del b3 b4 #可以多个一起删除
(integer) 2
5,更改数据(set 在没有数据的情况下,建数据;有数据的情况更新数据)
127.0.0.1:6379> set name zx
OK
127.0.0.1:6379> set name egon
OK
127.0.0.1:6379> get name
"egon"
6, getset : 先获取数据然后更新
127.0.0.1:6379> getset name alex
"egon"
127.0.0.1:6379> get name
"alex"
7, SETRANGE指定下标更新数据 ,从alex的第四个字符后面增加zxx
127.0.0.1:6379> get name
"alex"
127.0.0.1:6379> SETRANGE name 4 zxx
(integer) 7
127.0.0.1:6379> get name
"alexzxx"
8, 指定key递增
127.0.0.1:6379> incr num
(integer) 1
127.0.0.1:6379> incr num
(integer) 2
127.0.0.1:6379> incr num
(integer) 3
127.0.0.1:6379> incr num
(integer) 4
# 递增指定长度
127.0.0.1:6379> incrby key0 8
(integer) 8
127.0.0.1:6379> incrby key0 8
(integer) 16
127.0.0.1:6379> incrby key0 8
(integer) 24
8, 指定key递减
127.0.0.1:6379> decr num
(integer) 3
127.0.0.1:6379> decr num
(integer) 2
127.0.0.1:6379> decr num
(integer) 1
# 指定递减长度
127.0.0.1:6379> decrby key0 2
(integer) 22
127.0.0.1:6379> decrby key0 2
(integer) 20
127.0.0.1:6379> decrby key0 2
(integer) 18
9,append最后面追加
127.0.0.1:6379> get key1
"value1"
127.0.0.1:6379> append key1 345
(integer) 9
127.0.0.1:6379> get key1
"value1345"
10,查看字符长度
127.0.0.1:6379> get name
"alexzxx"
127.0.0.1:6379> STRLEN name
(integer) 7
11,从指定位置截取字符串(不会永久改变原字符串值)
127.0.0.1:6379> get name
"alexzxx"
127.0.0.1:6379> GETRANGE name 0 3
"alex"
Redis数据结构之hash
hash 一个key 多个属性
# 查看帮助
127.0.0.1:6379> help @hash
127.0.0.1:6379> hset people name egon age 18 add shanghai
(integer) 3
127.0.0.1:6379> hget people name
"egon"
# 查看hash类型的key中的属性是否存在
127.0.0.1:6379> hexists people age
(integer) 1
127.0.0.1:6379> hexists people gender
(integer) 0
# hsetnx 不存在则创建,存在则忽略
127.0.0.1:6379> hsetnx people phone 133
(integer) 1
127.0.0.1:6379> hget people phone
"133"
127.0.0.1:6379> hget people name
"egon"
127.0.0.1:6379> hsetnx people name zxx
(integer) 0
127.0.0.1:6379> hget people name
"egon"
# hdel删除hash中的某一个属性
# del 删除redis当中的某一个key
127.0.0.1:6379> hget people age
"18"
127.0.0.1:6379> hdel people age
(integer) 1
127.0.0.1:6379> hget people age
(nil)
# 更改hash属性
127.0.0.1:6379> hset people name zxx
(integer) 0
127.0.0.1:6379> hget people name
"zxx"
# 获取多个hash属性值
127.0.0.1:6379> hmget people name add
1) "zxx"
2) "shanghai"
# mget
127.0.0.1:6379> keys *
1) "people"
2) "num"
3) "key8"
4) "key0"
5) "key4"
6) "key1"
127.0.0.1:6379> mget key0 key1
1) "18"
2) "value1345"
# hgetall ,获取hash类型下的某个key中的所有属性及值
127.0.0.1:6379> hgetall people
1) "name"
2) "zxx"
3) "add"
4) "shanghai"
5) "gender"
6) "man"
7) "phone"
8) "133"
# hkeys ,只获取hash类型下的key中所有的属性
127.0.0.1:6379> hkeys people
1) "name"
2) "add"
3) "gender"
4) "phone"
# hvals,只获取hash类型下的key中所有的属性的值
127.0.0.1:6379> hvals people
1) "zxx"
2) "shanghai"
3) "man"
4) "133"
# hincrby 累加并返回hash类型中的某个属性的的值
127.0.0.1:6379> HINCRBY people id 1
(integer) 1
127.0.0.1:6379> HINCRBY people id 1
(integer) 2
127.0.0.1:6379> HINCRBY people id 1
(integer) 3
127.0.0.1:6379> hvals people
1) "zxx"
2) "shanghai"
3) "man"
4) "133"
5) "3"
# hincrbyfloat ,小数累加并返回hash类型中的某个属性的的值(hincrbyfloat存在数据计算精度问题)
127.0.0.1:6379> HINCRBYFLOAT people id 10.8
"13.8"
127.0.0.1:6379> HINCRBYFLOAT people id 10.8
"24.6"
127.0.0.1:6379> HINCRBYFLOAT people id 10.8
"35.4"
# 负数递减(不支持小数)
127.0.0.1:6379> hincrby people num 1
(integer) 1
127.0.0.1:6379> hincrby people num 1
(integer) 2
127.0.0.1:6379> hincrby people num -3
(integer) -1
# 获取hash类型的属性有多少个
127.0.0.1:6379> hlen people
(integer) 6
127.0.0.1:6379> hvals people
1) "zxx"
2) "shanghai"
3) "man"
4) "133"
5) "35.4"
6) "-1"
#某个hash类型下的属性的长度
127.0.0.1:6379> HSTRLEN people id
(integer) 4
# expire针对所有的kye设置过期时间(-1代表永久有效;-2代表过期)
127.0.0.1:6379> ttl people
(integer) -1
127.0.0.1:6379> EXPIRE people 1000
(integer) 1
127.0.0.1:6379> ttl people
(integer) 995
127.0.0.1:6379> EXPIRE people 1
(integer) 1
127.0.0.1:6379> ttl people
(integer) -2
127.0.0.1:6379> hgetall people
(empty array)
127.0.0.1:6379> ttl people
(integer) -2
redis数据类型_列表
列表 -> 一个key -> 多个值;
列表可以从前或者从后插入数据
# 插入数据
set key value
hash类型:hset key field value
列表从左插入lpush(先进后出):
127.0.0.1:6379> lpush class a b c d e f g
(integer) 7
# 获取列表中的数据
127.0.0.1:6379> lrange class 0 3
1) "g"
2) "f"
3) "e"
4) "d"
# 查询列表最左边的值
127.0.0.1:6379> LRANGE excel -1 -1
1) "a"
列表从右插入rpush(先进先出):
127.0.0.1:6379> rpush table 1 2 3 4 5
(integer) 5
# 查处所有的值
127.0.0.1:6379> LRANGE table 0 -1
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
# 查询列表中最右边的值
127.0.0.1:6379> LRANGE table -1 -1
1) "5"
setnx:当一个key不存在则插入数据,存在则忽略
hsetnx:当一个key某个属性不存在时则插入数据,存在则忽略
lpushx:当列表存在时则插入(追加)数据
rpushx: 当列表存在时则在列表右侧追加数据,不存在则忽略
127.0.0.1:6379> lpushx excel 5 6 7
(integer) 6
127.0.0.1:6379> lrange excel 0 -1
1) "7"
2) "6"
3) "5"
4) "a"
5) "b"
6) "a"
127.0.0.1:6379> lpushx table a b c
(integer) 8
127.0.0.1:6379> lrange table 0 -1
1) "c"
2) "b"
3) "a"
4) "1"
5) "2"
6) "3"
7) "4"
8) "5"
127.0.0.1:6379> rpushx table a b c
(integer) 11
127.0.0.1:6379> lrange table 0 -1
1) "c"
2) "b"
3) "a"
4) "1"
5) "2"
6) "3"
7) "4"
8) "5"
9) "a"
10) "b"
11) "c"
# linsert 【key】 before [指定的值] 【新增的值】在指定的值前面追加数据
127.0.0.1:6379> lrange excel 0 -1
1) "7"
2) "6"
3) "5"
4) "a"
5) "b"
6) "a"
127.0.0.1:6379> linsert excel before 5 44
(integer) 7
127.0.0.1:6379> lrange excel 0 -1
1) "7"
2) "6"
3) "44"
4) "5"
5) "a"
6) "b"
7) "a"
127.0.0.1:6379> linsert excel before a bb
(integer) 8
127.0.0.1:6379> lrange excel 0 -1
1) "7"
2) "6"
3) "44"
4) "5"
5) "bb"
6) "a"
7) "b"
8) "a"
# 指定的后面追加数据
127.0.0.1:6379> linsert excel after 7 77
(integer) 9
127.0.0.1:6379> lrange excel 0 -1
1) "7"
2) "77"
3) "6"
4) "44"
5) "5"
6) "bb"
7) "a"
8) "b"
9) "a"
# 删除数据
del:删除某个key
hdel:删除hash类型中的中的某个属性
lrem:删除列表中某个区间中的值(从列表左侧开始移除数据)
lrem
set:如果key不存在侧增加数据,存在则更新
mset:如果hash类型中存在某个属性则更新,不存在则增加
lset:如果列表中存在则更新,不存在则增加
# lset
127.0.0.1:6379> LRANGE table 0 -1
1) "-1"
2) "888"
3) "666"
4) "1"
5) "2"
6) "3"
127.0.0.1:6379> lset table 2 000
OK
127.0.0.1:6379> LRANGE table 0 -1
1) "-1"
2) "888"
3) "000"
4) "1"
5) "2"
6) "3"
# ltrim ,截取列表中指定范围内数据,替换到原来的数据列表之中
127.0.0.1:6379> LRANGE table 0 -1
1) "-1"
2) "888"
3) "666"
4) "1"
5) "2"
6) "3"
7) "5"
8) "a"
9) "b"
10) "666"
127.0.0.1:6379> ltrim table 0 5
OK
127.0.0.1:6379> LRANGE table 0 -1
1) "-1"
2) "888"
3) "666"
4) "1"
5) "2"
6) "3"
# strlen 获取字符串的长度
# hlen 获取hash类型中元素的格式
# hstelen 获取hash类型中属性的长度
# llen 获取列表中元素的个数
127.0.0.1:6379> LRANGE table 0 -1
1) "-1"
2) "888"
3) "000"
4) "1"
5) "2"
6) "3"
127.0.0.1:6379> llen table
(integer) 6
# lindex 根据下标获取元素
127.0.0.1:6379> LRANGE table 0 -1
1) "-1"
2) "888"
3) "000"
4) "1"
5) "2"
6) "3"
127.0.0.1:6379> lindex table 0
"-1"
127.0.0.1:6379> lindex table 1
"888"
#lpop ,列表的左边开始消费数据,消费完毕则在列表中删除
127.0.0.1:6379> LRANGE table 0 -1
1) "888"
2) "000"
3) "1"
4) "2"
5) "3"
127.0.0.1:6379> lpop table 1
1) "888"
127.0.0.1:6379> LRANGE table 0 -1
1) "000"
2) "1"
3) "2"
4) "3"
#lpop ,列表的右边开始消费数据,消费完毕则在列表中删除
127.0.0.1:6379> LRANGE table 0 -1
1) "000"
2) "1"
3) "2"
4) "3"
127.0.0.1:6379> rpop table 1
1) "3"
127.0.0.1:6379> LRANGE table 0 -1
1) "000"
2) "1"
3) "2"
# rpoplpush 消费a列表的最右边元素,追加到b列表的最左边
127.0.0.1:6379> lpush a 1 2 3
(integer) 3
127.0.0.1:6379> lpush b 4 5 6
(integer) 3
127.0.0.1:6379> rpoplpush a b
"1"
127.0.0.1:6379> lrange a 0 -1
1) "3"
2) "2"
127.0.0.1:6379> lrange b 0 -1
1) "1"
2) "6"
3) "5"
4) "4"
# 从列表最左侧开始消费数据(有数据的情况下消费一个;没有数据的情况下,会卡10s)
127.0.0.1:6379> LRANGE b 0 -1
1) "5"
2) "4"
3) "2"
127.0.0.1:6379> blpop b 10
1) "b"
2) "5"
127.0.0.1:6379> blpop b 10
1) "b"
2) "4"
127.0.0.1:6379> blpop b 10
1) "b"
2) "2"
127.0.0.1:6379> blpop b 10
...在另一个终端开启并执行
127.0.0.1:6379> LPUSH b 3
(integer) 1
127.0.0.1:6379> blpop b 10
1) "b"
2) "3"
(2.81s)
redis数据类型_ 无序集合
# 增加新的成员
#set key value --> get key --> del key 删除字符串类型的key
#hset key field value --> hmget key field --> hdel key field 删除hash类型中的属性
#lpush key value --> lrange key 0 -1 --> lrem 删除列表中某个区间的数据
sadd key value
127.0.0.1:6379> sadd skey svalue1 svalue2 svalue3
(integer) 3
# 查看内容
127.0.0.1:6379> SMEMBERS skey
1) "svalue3"
2) "svalue2"
3) "svalue1"
#srem删除数据
127.0.0.1:6379> SMEMBERS skey
1) "svalue3"
2) "svalue2"
3) "svalue1"
127.0.0.1:6379> srem skey svalue1
(integer) 1
127.0.0.1:6379> SMEMBERS skey
1) "svalue3"
2) "svalue2"
# 修改数据
# set key value
# hset key field value
# linsert 下标 修改的内容
smove移动数据
127.0.0.1:6379> sadd a1 1 2 3
(integer) 3
127.0.0.1:6379> sadd a2 11 22 33
(integer) 3
127.0.0.1:6379> SMEMBERS a1
1) "1"
2) "2"
3) "3"
127.0.0.1:6379> SMEMBERS a2
1) "11"
2) "22"
3) "33"
127.0.0.1:6379> smove a1 a2 3
(integer) 1
127.0.0.1:6379> SMEMBERS a1
1) "1"
2) "2"
127.0.0.1:6379> SMEMBERS a2
1) "3"
2) "11"
3) "22"
4) "33"
PS:集合中不存在重复数据(如果a1 和a2 都有3,则a1没有3,a2也没有3)
# scard ,返回集合中成员的个数
127.0.0.1:6379> SMEMBERS a1
1) "1"
2) "2"
127.0.0.1:6379> scard a1
(integer) 2
#从集合中随机返回指定个数的成员
127.0.0.1:6379> SMEMBERS a2
1) "3"
2) "11"
3) "22"
4) "33"
127.0.0.1:6379> SRANDMEMBER a2 1
1) "33"
127.0.0.1:6379> SRANDMEMBER a2 2
1) "11"
2) "33"
# 判断集合中是否有该成员
127.0.0.1:6379> SMEMBERS a2
1) "3"
2) "11"
3) "22"
4) "33"
127.0.0.1:6379> SISMEMBER a2 4
(integer) 0
127.0.0.1:6379> SISMEMBER a2 33
(integer) 1
#随机返回一个成员(并删除)
127.0.0.1:6379> SMEMBERS x
1) "1"
2) "2"
3) "3"
4) "6"
127.0.0.1:6379> spop x
"6"
127.0.0.1:6379> SMEMBERS x
1) "1"
2) "2"
3) "3"
交集 并集 差集
交集:多个集合加起来的重复部分
127.0.0.1:6379> SMEMBERS a1
1) "1"
2) "2"
3) "3"
127.0.0.1:6379> SMEMBERS a2
1) "3"
2) "11"
3) "22"
4) "33"
127.0.0.1:6379> SINTER a1 a2
1) "3"
# 交集的部分保存为一个新的集合
127.0.0.1:6379> SINTERSTORE ab a1 a2
(integer) 1
127.0.0.1:6379> SMEMBERS ab
1) "3"
并集:多个集合加起来的所有内容
127.0.0.1:6379> SMEMBERS a1
1) "1"
2) "2"
3) "3"
127.0.0.1:6379> SMEMBERS a2
1) "3"
2) "11"
3) "22"
4) "33"
127.0.0.1:6379> SUNION a1 a2
1) "1"
2) "2"
3) "3"
4) "11"
5) "22"
6) "33"
#将多个集合合并成一个新的集合
127.0.0.1:6379> SUNIONSTORE new_ab a1 a2
(integer) 6
127.0.0.1:6379> SMEMBERS new_ab
1) "1"
2) "2"
3) "3"
4) "11"
5) "22"
6) "33"
差集:两个集合不重复的数据
# 显示排列在第一个集合不同的地方
127.0.0.1:6379> SMEMBERS b1
1) "1"
2) "2"
3) "3"
127.0.0.1:6379> SMEMBERS b2
1) "3"
2) "44"
3) "55"
127.0.0.1:6379> SDIFF b1 b2 # b1不同的地方,b1在前面
1) "1"
2) "2"
127.0.0.1:6379> SDIFF b2 b1 # b2不同的地方,b2在前面
1) "44"
2) "55"
127.0.0.1:6379> SDIFFSTORE b3 b1 b2 #把b1不同的地方保存在一个新的集合b3中
(integer) 2
127.0.0.1:6379> SMEMBERS b3
1) "1"
2) "2"
127.0.0.1:6379> SDIFFSTORE b4 b2 b1 #把b2不同的地方保存在一个新的集合中b4中
(integer) 2
127.0.0.1:6379> SMEMBERS b4
1) "44"
2) "55"
# 获取成员数
127.0.0.1:6379> scard b1
(integer) 2
redis数据类型_有序集合
集合当中不存在重复数据
与无序集合之间最大的区别:有序集合拥有一个分数的属性
#增加数据
# set key value
# hset key value
# lpush key value
sadd key value
127.0.0.1:6379> zadd school 1 zx
(integer) 1
127.0.0.1:6379> zadd school 2 zy
(integer) 1
127.0.0.1:6379> zadd school 3 pp
(integer) 1
127.0.0.1:6379> zadd school 4 dd
(integer) 1
#获取数据
# get key
# hget key
# lrange key
zrange key
#查看所有数据
127.0.0.1:6379> zrange school 0 -1
1) "zx"
2) "zy"
3) "pp"
4) "dd"
127.0.0.1:6379> zrange school 1 3
1) "zy"
2) "pp"
3) "dd"
# 获取成员数
127.0.0.1:6379> zcard school
(integer) 4
# 获取指定区间的成员数
127.0.0.1:6379> zcount school 0 2
(integer) 2
#模糊匹配(a开头g结尾区间内的)
127.0.0.1:6379> zrange school 0 50
1) "aing"
2) "pp"
3) "dd"
4) "pinp"
127.0.0.1:6379> ZLEXCOUNT school [a [g
(integer) 1
#获取成员的分数值
127.0.0.1:6379> zrange school 0 -1
1) "zx"
2) "zy"
3) "pp"
4) "dd"
127.0.0.1:6379> ZSCORE school p
(nil)
127.0.0.1:6379> ZSCORE school pp
"3"
# 模糊匹配(从0开始匹配,z开头的,支持正则)
127.0.0.1:6379> zscan school 0 match "z*"
1) "0"
2) 1) "zx"
2) "1"
3) "zy"
4) "2"
#删除数据zrem
127.0.0.1:6379> zrange school 0 50 # 相当于zrange,数字可以更改
1) "zy"
2) "pp"
3) "dd"
127.0.0.1:6379> zrem school zy
(integer) 1
127.0.0.1:6379> zrange school 0 50
1) "pp"
2) "dd"
常用redis系统命令
1,查询所有的key
127.0.0.1:6379> keys *
1) "skey"
2) "school"
3) "class"
4) "num"
5) "a"
6) "ab"
7) "b1"
8) "excel"
9) "table"
10) "key1"
11) "b3"
12) "new_ab"
2,查询数据类型
127.0.0.1:6379> type b3
set
127.0.0.1:6379> set abc bcd
OK
127.0.0.1:6379> type abc
string
3,查询过期时间
127.0.0.1:6379> ttl a11 #秒
(integer) -1
127.0.0.1:6379> pttl a11 #毫秒
(integer) -1
4,查询key是否存在
127.0.0.1:6379> exists b7
(integer) 0
127.0.0.1:6379> exists b4
(integer) 1
5,重命名key
127.0.0.1:6379> rename a1 a11
OK
127.0.0.1:6379> exists a1
(integer) 0
127.0.0.1:6379> exists a11
(integer) 1
6,随机返回一个key
127.0.0.1:6379> RANDOMKEY
"key1"
127.0.0.1:6379> RANDOMKEY
"table"
127.0.0.1:6379> RANDOMKEY
"a1"
6,删除key
127.0.0.1:6379> del b2
(integer) 1
网友评论