文章目录
Redis—安装、数据类型(String、List、Hash、Set、Zset)、主从配置、数据持久化、哨兵、集群
nosql: not only sql
安装
-
可以通过yum安装,要先配置epel源
yum install -y redis
-
可以编译安装
wget http://download.redis.io/releases/redis-5.0.5.tar.gz tar -xf redis-5.0.5.tar.gz cd redis-5.0.5/ make
redis可执行文件
redis-benchmark # 性能测试
redis-check-rdb # 检查修复aof文件
redis-sentinel # 检查修复rdb文件
redis-trib.rb # redis的客户端
redis-check-aof # redis的集群
redis-cli # redis的服务端
redis-server # 集群管理
redis命令
# 命令不区分大小写
# 启动 默认端口6379
[root@localhost redis-5.0.5]#./src/redis-server
# 测试 -p是静默模式
[root@localhost redis-5.0.5]#./src/redis-benchmark -p
# 连接
[root@localhost redis-5.0.5]#./src/redis-cli
-h iIP地址
-p 端口
-s 套接字
-a 密码
-n 数据库的数量
--help 帮助信息
# 命令相关
# 测试redis是否连通,返回值是pong
ping
# 获取全部信息
info
# 打印内容,测试时使用
echo message
# 退出
quit
# 切换redis的库,共16个,0~15
select 0~15
数据类型
- string
- hash
- list
- set
- zset
[root@localhost ~]#cd mydata/redis-5.0.5/
[root@localhost redis-5.0.5]#./src/redis-cli
127.0.0.1:6379> SELECT 2
OK
127.0.0.1:6379[2]> set alex dsb
OK
127.0.0.1:6379[2]> get alex
"dsb"
127.0.0.1:6379[2]> del alex
(integer) 1
127.0.0.1:6379[2]> get aex
(nil)
127.0.0.1:6379[2]>
# del 后可跟多个key 不存在就忽略
# exists 判断key是否存在 不存在0 存在1
# expire alex 3 3秒后自动清除
# TTL key 看key的剩余存活时间
# keys * 匹配所有 查找所有匹配的key
# keys a*
# keys a??
# move alex 1 移动key到另一个库里 move key db
# pexpire key millseconds 过期毫秒时间
# Pttl key 查看剩余时间
# randomkey 随机获取一个key 不删除
# rename key newkey 改名
# type key 查看key存储的value的类型
String
set
设置key value
key 存在 覆盖 不存在 新建 、
EX seconds | PX millseconds | NX | XX
NX 键不存在,新建,否则,返回nil
XX 键存在才能操作
mset
mset key value key value key value
可以设置多个,覆盖已存在的key
get
获取对应的value,只能获取一个
mget
批量获取key的value
getset
给指定的key设置新的value,并返回原来的value
strlen
strlen key
返回value的长度
append
append key value
存在 追加 不存在 新建
incr
将key中存在的数加1,只能对数字有效
decr
减一
incrby
加指定的值
decrby
减
list
LPUSH
入栈元素 listname可以是rpush创建的 元素值可重复
lpush listname value1 value2 …
lrange
查看元素
lrange listname start end
插入顺序与栈一样
lpop
lpop listname
出栈元素
rpush
入队列 listname可以是lpush创建的 元素值可重复
rpush listname value1 value2 …
rpop
rpop listname
出队列元素
rpushx
将value插入 队列式
rpushx value
lpushx
将value插入 栈式
lpushx value
lindex
取索引 从表头开始数
lindex listname value
linsert
将value插入到listname的元素value1的前边 不存在则不操作
linsert listname before value1 value
将value插入到key的元素value1的后边
linsert listname aftervalue1 value
llen
获取列表的长度
llen listname
lrem
删除列表中的value
- num > 0:从表头开始删除指定个数的value
- num = 0:所有的value都删掉
- num < 0:从表尾开始删除指定个数的value
lrem listname num value
lset
用value替换指定索引位置的value,如果所有超出范围直接报错
lset listname 3 value
ltrim
列表的切片
ltrim listname start end
hash
{‘db’:{‘redis’:‘redis.conf’,‘mysql’:‘mysql.cnf’}}
hset
hset key field value
exmple:
hset db redis redis.conf
hest db mysql mysql.cnf
hlen
key的长度
hlen key
hget
hget key field
exmple:
hget db redis
hegtall
获取所有的键和值
hgetall key
hmset
批量增加键值对
hmset ac 1 1 2 2 3 3 4 4
hmget
批量获取键对应的值
hmget ac 1 2 3 4
hsetnx
给指定的hash增加键值对
hsetnx ac 5 5
hkeys
获取hash表中所有的field
hkeys db
hvals
hvals db
hdel
删除
hdel db redis mysql
hexists
判断hash表中的field是否存在,存在1,否则0
hexists key field
hincrby
set
sadd
给集合添加值,自动去重
sadd s22 dazhuang xiaozhuang …
smembers
查看集合中的成员
smembers s22
scard
获取集合元素的个数
scard s22
sdiff
显示前面存在,后面集合不存在的元素,差集
sdiff s22 s33
sinter
交集
sinter s22 s33
sunion
并集
sunion s22 s33
sismember
判断元素是否在集合中,在则为1,否则为0
sismember s22 dazhuang
smove
将value从source集合移动到destination集合中,source不存在啥也不操作,destination不存在,创建
somve source destination value
spop
spop setname count
srandmember
randomly get some values
zset
把set中的命令前边的s换成z
发布订阅
多人订阅,多人发布。
subscribe
订阅一个或者多个频道
subscribe channel1 channel2 …
publish
给指定的频道发送消息
publish channel msg
psubscribe
psubscribe patter.*