1. Redis数据类型
字符串 String
哈希 Hash
列表 List
集合 Set
有序集合 Zset
2. String类型
字符串类型是Redis中最基础的数据类型,他在Redis中是二进制
安全的,可以接受任何格式的数据,如JEPG
图像数据或JSON
对象描述信息等。在Redis中字符串类型的Value最多可以容纳的数据长度是512M
。
(1)保存
如果设置的键不存在则为添加,如果设置的键已经存在则修改
。
- 设置键值
set
set key value
- 获取键值
get
get key
- 设置键值及其过期时间,以秒为单位
setex
setex key second value
- 一下设置多个键值
mset
mset key1 value1 key2 value2 key3 value3 .....
- 追加值
append
append key value
(2)获取
根据键获取值,如果不存在此键则返回nil
- 获取 单个键的值
get
get key
- 获取多个键的值
mget
mget key1 key2 key3 ...
(3)键命令
查找键,支持正则表达式
keys pattern
- 查看所有键
keys *
- 查看名称中包含
a
的键
keys 'a*'
- 判断数据库中是否存在某个键
exists
,如果存在返回1
,不存在返回0
exists key
- 查看
key
对应的value
的类型type
type key
- 删除键级对应的值
del
,可以以下删除多个键值
del key1 [key2 key3]
- 设置过期时间
expire
expire key seconds
- 查看有效时间
ttl
,如果设置了超时时间,过期后再获取会返回-2
,如果对为设置超时时间的键获取有效时间会返回-1
ttl key
3. HASH类型
hash
用于存储对象
,对象的结构为属性
、值
值
得类型为string
(1)增加
- 设置单个属性
hset
hset key filed value
- 设置多个属性
hmset
hmset key filed1 value1 filed2 value2 ...
查看user
类型
(2)获取
- 获取指定键所有的属性
hkeys
hkeys key
- 获取一个属性的值
hget
hget key field
- 获取多个属性的值
hmget
hmget key field1 field2 ...
- 获取所有属性的值
hvals key
(3)删除
- 删除整个hash键及值,使用
del
命令
del key
- 删除属性,属性对应的值会被一起删除
hdel key field1 field2
4. 列表
列表的元祖类型为string
按照插入顺序排列
(1)增加
- 在左侧插入数据
lpush key value1 value2 ...
- 查看列表元素
lrange
,结束位置大于列表长度时只返回所有元素,不会报错, - start、stop为元素的下标索引
- 索引从左侧开始,第一个元素下标为0
- 索引可以是负数,表示从尾部开始计数,如-1表示最后一个元素
-
lrange key 0 -1
:获取列表中的所有元素
lrange key start stop
- 右侧插入
rpush
rpush key value1 value2 ...
- 在指定元素的前面或后面插入新元素
linsert
linsert key before或after 现有元素 新元素
在列表num
中的元素3
之前加入一个新元素H
- 设置指定索引位置的元素值
lset
lset key index value
将列表num
下标为0
的元素值改为4
(2)删除
- 删除指定元素
- 将列表中前count次出现的值为value的元素移除(移除个数)
- count > 0:从头往尾移除
- count < 0:从尾往头移除
- count = 0:移除所有出现的元素
lrem key count value
将列表 num 从前往后删除两个值为a的元素
将列表 num 从后往前删除一个值为c的元素
将列表 num 删除所有值为4的元素
5.集合
无序集合
元素为string
元素具有唯一性且不可变
说明:对于集合没有修改操作
(1)增加
- 添加元素
sadd
sadd key member1 member2 ...
向键为info的集合中添加元素'zhangsan'、'lisi'、'wangwu'
(2)获取
- 返回所有的元素
smembers
smembers key
(3)删除
- 删除指定元素
srem
srem key 元素
6.有序集合
sorted set:有序集合
元素为string类型
元素具有唯一性,不重复
每个元素都会关联一个double
类型的score
,表示权重
,通过权重将元素从小到大
排序
说明:没有修改操作
(1)增加
- 添加
zadd key score1 member1 score2 member2
向键为info的集合中添加元素'lisi'、'wangwu'、'zhaoliu'、'zhangsan',权重分别为4、5、6、3
(2)获取
- 返回指定范围内的元素
- start、stop为元素的下标
- 索引从左侧开始,第一个元素下标为0
- 索引可以是负数,表示从尾部开始计数,如-1表示最后一个元素
zrange key start stop
- 获取键为info的集合中所有元素
- 获取score值在min和max之间的成员(包括min和max)
zrangebyscore
- 返回成员memberde的score值
zscore
(3)删除
- 删除指定元素
zrem
zrem key member1 member2 ...
- 删除权重在指定范围内的元素
zremrangebyscore key min max
7.事务:
开启事务
- 开启后,执行的所有任务都在该事务中存储
multi
执行事务
- 事务执行后,存储在事务中的所有任务一并执行,返回结果
exec
取消事务
- 事务取消则该事务内的所有任务都不会被执行
discard
监视
- 监视一个或多个
key
,如果事务在执行之前,所监听的key发生变化,那么事务的执行将被打断
watch key ...
取消监视
unwatch key ...
8.发布订阅
1. 订阅频道消息
- 可以订阅多个频道
subscrib channel
# subscrib channel1 channel2 ...
2. 频道发布消息
publish channel message
9. 数据持久化
redis持久化提供了两种数据备份方式,一种是RDB,另一种是AOF
RDB | AOF | |
开启关闭 | 开启:默认行为;关闭:把配置文件中的所有的save都注释即可 | 开启:在配置文件中,将appendonly设置为yes;关闭:将其设置为no |
同步机制 | 可以指定某个时间内发生多少个命令就进行同步,比如1分钟内发生5次命令就进行同步 | 每秒同步或每次发生命令后就同步 |
存储内容 | 存储的是redis里面的具体值 | 存储的是写操作命令 |
存储文件的路径 | 根据dri以及dbfilename来指定路径和具体的文件名 | 根据dri以及dbfilename来指定路径和具体的文件名 |
优点 | 1.数据存储到文件中会进行压缩,文件体积比AOF小,2.因为存储的是redis具体值,并进行了压缩,因此在恢复时,比AOF快。3.适用于文件备份 | 1.AOF的策略是每秒或每次发生写操作时进行数据同步,即使服务器发生故障,最多丢失1秒的数据。2.AOF存储的是redis命令, 并且是直接追加到AOF文件后面,因此,每次备份数据的时候只需要添加新的数据进去就可以了。3.如果AOF文件比较大了,那么redis会进行重写,只保留最小的命令集合。 |
- RDB数据持久化配置信息
/etc/redis/redis.conf
- 数据存储文件
- AOF数据持久化配置
10. 设置用户名密码
- 登录时指定密码认证
redis-cli -p 6379 -h 127.0.0.1 -a password
- 登陆成功后认证
# 授权
127.0.0.1:6379> auth password
127.0.0.1:6379> set name xiaoming