Redis基础知识
本文最后更新于 309 天前,其中的信息可能已经有所发展或是发生改变。

介绍

Redis是一个非关系型数据库,常用于缓存数据和分布式加锁。
优先请参考文档:http://redisdoc.com/index.html

五大数据结构

1.String结构

单值缓存

SET key value
GET key

对象缓存

最后面两种的好处是单个列的缓存更新的时候更加方便 不用同步整个用户的数据。
SET user:1 value(json数据)
MSET user:1:name benzhu user:1:sex 男
MGET user:1:name user:1:sex

分布式锁

将key的值设置为value,当且仅当key不存在,结果成功返回1,失败返回0:
SETNX key value
执行完业务释放锁,也就是删除key:
DEL key
将key值设置为value,并将设置key的生存周期,防止程序意外的终止导致死锁:
setex key seconds value

计数器

自动为value加1
INCR key

分布式系统全局序列号

为键 key 储存的数字值加上增量 increment,一般用于批量的划分序列号给程序,防止数据库自增ID冲突:
INCRBY key increment

2.hash哈希

单值存储

存储一个哈希表key的键值:
HSET key fieId value
获取哈希表key对应的fieId键值:
HGET key fieId
删除fieId:
HDEL key fieId
增加数量number:
HINCRBY key fieId number
获取key中number总数:
HLEN key
获取key中所有fieId:
HGETALL key

对象存储

就是存储多个键值对:
HMSET user name value sex value
取出多个键值对:
HMGET user name sex

优点:

整合存储,方便管理
相比String消耗内存与CPU更小
相比String更省空间

缺点:

过期功能不能使用在fieId,只能用于key,Redis集群架构下不适合大规模使用。

3.List列表

常用操作

将一个或者多个值插入key列表的左边(表头):
LPUSH key value[value...]
将一个或者多个值插入key列表的右边(表尾):
RPUSH key value[calue...]
读取key列表左边(表头)的值并移除:
LPOP key
读取key列表右边(表尾) 的值并移除:
RPOP key
返回key中指定start-stop区间的元素:
LRANGE key start stop
从key表头弹出一个元素,阻塞等待timeout:
BLPOP key timeout
从key表尾弹出一个元素,阻塞等待timeout:
BRPOP key timeout

数据结构实现

Stack(栈):LPUSH + LPOP
Queue(队列):LPUSH + RPOP
Blocking MQ(阻塞队列):LPUSH + BRPOP

4.Set集合

常用操作

往集合key中存入元素,存在则忽略:
SADD key value
从集合key中删除元素:
SREM key value
获取集合key中所有元素:
SMEMBERS key
获取集合中元素个数:
SCARD key
判断value元素是否存在于集合key中:
SISMEMBER key value
从集合中随机选出count个元素,元素不删除:
SRANDMEMBER key [count]
从集合中选出count个元素,元素从key中删除:
SPOP key [count]

运算操作

交集运算:
SINTER key [key...]
交集结果放入新集合destination:
SINTERSTORE destination key [key...]
并集运算:
SUNION key [key...]
并集结果放入新集合destination:
SUNIONSTORE destination key [key...]
差集运算:
SDIFF key [key...]
差集结果放入新集合destination:
SDIFFSTORE destination key [key...]

5.zset(有序集合)

也称Sorted-Set

常用操作:

往有序集合key中加入带分值元素:
ZADD key score member
从有序集合中删除元素:
ZREM key member
返回有序集合中member的分值:
ZSCORE key member
为有序集合member的分值加上increment:
ZINCRBY key increment member
返回有序集合key中元素个数:
ZCARD key
正序获取start到stop下标的元素:
ZRANGE key start stop
查看全部 o – -1;withscores 显式分值;
倒序获取start到stop下标元素:
ZREVRANGE key start stop

集合操作

并集运算:
ZUNIONSTORE destkey numkeys key
交集运算:
ZINTERSTORE destkey numkeys key

6.通用操作

1.查看所有key:
keys *
2.筛选benzhu开头的key:
keys benzhu?
3.判断key是否存在,存在返回1,不存在返回0:
exists key
4.key重命名:
rename oldkey newkey
5.设置number过期时间,单位为秒:
expire key number
6.key超时所剩时间:
ttl key
7.key的类型返回:
type key
8.更换数据库
redis中有16个数据库可以选择,默认为0;
select 0-15
9.移动key到别的数据库:
move key 0-15

7.事务

1.开启事务:
multi
2.提交事务:
exev
3.回滚:
discard

8.持久化

RDB持久化

默认开启,将某个时间点的所有数据都存放在硬盘上。数据量随着时间而增大,故障会丢失最后一次快照之后的数据。
生成单独的文件,方便进行恢复,性能最大化。

AOF持久化

将写命令添加到AOF文件的末尾,需要使用设置同步选项:

选项 介绍
always 每个写命令都同步,最安全但是会降低服务器性能,效率低。
everysec 每秒同步一次,崩溃后丢失一秒左右的数据。
no 让操作系统决定何时同步,提升不大。

随着写请求的增多,AOF会越来越大。redis提供AOF重写的特性,去除AOF文件的冗余写命令。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇