redis
-
定义:
-
redis
是开源的,内存数据库,可以用于数据库缓存和消息中间件,支持多种数据类型,字符串,哈希,列表,集合,有序集合等
-
本地启动 - 常用命令
-
redis-cli
-
redis-server.exe
# 带样式 前提你装了 -
/etc/init.d/redis-server stop
---> 停止 -
/etc/init.d/redis-server start
---> 启动 -
/etc/init.d/redis-server restart
---> 重启
远程连接redis
数据库
-
redis-cli -h <hostname> -p <port>
数据库切换
-
select 数据库名
注:几号数据库或是新建的数据库名
通过key查询值
-
通过所key查询所有值
-
查询所有键
-
keys *
-
-
查询包含a的键
-
keys 'a*'
-
-
查看键对应的value值的类型
-
type key
值的类型
-
字符串
string
-
哈希
hash
-
列表
list
-
集合
set
-
有序集合
zset
string
保存设置键值
-
设置的值不存在就添加,存在则修改
-
set key value
-
设置键值及过期时间,单位秒
-
setex key 秒数 value
设置多个键值
-
mset key1 value1 key2 value2 ...
追加值
-
append 'key' 'value'
-
理解为常用append尾部追加
-
获取值
通过单个key获取值
-
get key
通过多个key获取多个值
-
mget key1 key2...
判断键是否存在
-
如果存在返回1,不存在返回0
-
exists key1
-
删除
删除键及对应的值
-
del key1 key2...
-
可单个,可多个
-
设置key的过期时间,单位秒
-
expire 'key' 秒数
查看有效时间,单位秒
-
ttl key
hash
-
用于存储对象,对象的结构为属性、值+
-
值的类型为string
保存设置属性
设置单个属性
-
hset key field value
-
key的属性field为value
-
个人理解:字典的值是另一个字典
-
设置多个属性
-
hmset key field1 value1 field2 value2 ...
获取
获取指定键所有的属性
-
hkeys key
获取指定属性的值
-
hget key field
获取指定属性的多个值
-
hmget key field1 field2 ...
获取key的所有属性
-
hvals key
删除
-
删除整个hash键及值 , 使用del命令
-
删除属性,属性对应的值会被一起删除
-
hdel key field1 field2 ...
-
list
-
列表的元素数据类型string
-
按插入数据顺序排序
增加
从左侧插入数据
-
lpush key value1 value2 ...
从右侧插入数据
-
rpush key value1 value2 ...
左右侧数据插入理解:
-
添加完第一个值,在第一个值左侧或右侧向外添加数据元素
在指定元素的前或后插入新元素
-
linsert key before或after 现有元素 新元素
-
linsert key before 目标元素 新添元素
-
在目标元素之前添加 新元素
-
-
linsert key after 目标元素 新添元素
-
在目标元素之后添加 新元素
-
-
获取
遍历打印该key的所有值
-
lrange key
-
lrange key 起始下标 结束下标
-
设置的下标区间 包含该下标 左闭右闭
-
-
设置指定索引位置的元素值
-
lset key index value
-
例:
lset a 1 z
-
修改key为a的下标为1的元素值为z
-
-
删除
删除指定元素
-
lren key count value
-
count>0 从头往尾移除
-
count<0 从尾往头移除
-
count=0 移除所有
-
set & zset
set
-
无序集合
-
元素为string类型
-
元素具有唯一性,不重复 去重
-
对于集合没有修改操作
增加
添加元素
-
sadd key member1 member2 ...
-
sadd key 元素1 元素2 ...
获取集合所有元素
-
smembers key
删除
删除指定元素
-
srem key member1 member2 ...
-
删除指定key的单个或多个元素
-
zset
-
sorted set 有序集合
-
元素为string类型
-
元素具有唯一性,不重复 去重
-
每个元素都会关联一个double类型的score,表示权重
-
注:没有修改操作
增加
添加元素
-
zadd key score1 member1 score2 member2 ...
-
score 值为权重(可以理解为排序的正向顺序,数值从小到大)
-
member1 值为元素 string 类型
-
获取
获取指定范围内的元素(下标,左闭右闭)
-
zrange key 起始下标 结尾下标
获取score值在min和max之间的元素
-
zrangebyscore key min max
-
min 和 max 值取决于score值
-
获取元素member的score值
-
zscore key member
-
score 值 可以称为 权值
-
删除
删除指定元素
-
zrem key memeber1 member2 ...
删除权重值在指定范围内的元素
-
zremrangebyscore key min max
事务
-
命令及描述:
-
1DISCARD 取消事务,放弃执行事务块内的所有命令。
-
2EXEC 执行所有事务块内的命令。
-
3MULTI 标记一个事务块的开始。
-
4UNWATCH 取消 WATCH 命令对所有 key 的监视。
-
5[WATCH key key ...] 监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断。
Redis 事务
-
可以一次执行多个命令, 并且带有以下两个重要的保证:
-
批量操作在发送 EXEC 命令前被放入队列缓存。
-
收到 EXEC 命令后进入事务执行,事务中任意命令执行失败,其余的命令依然被执行。
-
在事务执行过程,其他客户端提交的命令请求不会插入到事务执行命令序列中。
一个事务从开始到执行会经历以下三个阶段:
-
开始事务。
-
命令入队。
-
执行事务。
redis 127.0.0.1:6379> MULTI
OK
redis 127.0.0.1:6379> SET book-name "Mastering C++ in 21 days"
QUEUED
redis 127.0.0.1:6379> GET book-name
QUEUED
redis 127.0.0.1:6379> SADD tag "C++" "Programming" "Mastering Series"
QUEUED
redis 127.0.0.1:6379> SMEMBERS tag
QUEUED
redis 127.0.0.1:6379> EXEC
1) OK
2) "Mastering C++ in 21 days"
3) (integer) 3
4) 1) "Mastering Series"
2) "C++"
3) "Programming"