Redis学习笔记

简述

Redis遵守BSD协议,key-value数据库

优势

  • 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s
  • 支持复杂的数据结构并且提供对他们的原子性操作,这是一个不同于其他数据库的进化路径。所有操作都是原子性的,多个操作也支持事务,通过MULTI和EXEC指令包起来。支持 Strings, Lists, Hashes, Sets 及 Ordered Sets等多种数据结构。
  • 支持master-slave模式的数据备份,还支持 publish/subscribe, 通知, key 过期等等特性
  • 轻量一个空Redis实例占用的内在只有1M左右

配置文件及参数

  • redis.windows.conf为win下配置文件,也可以通过CONFIG SET/GET
  • 日志级别:debug、verbose、notice、warning,默认为 notice
  • rdbcompression默认yes,采用LZF压缩

语法

常用

  • exists key:是否存在
  • §expire key 10:10s后过期,带P为毫秒
  • §expireat key timestamp:某个时间后过期,带P为毫秒
  • keys pattern:查找符合的 key
  • persist key:移除过期时间
  • §TTL key:time to live剩余时间,带P为毫秒
  • RANDOMKEY:随机返回一个key
  • rename key newkey:------newkey存在会被覆盖
  • renamenx key newkey:newkey不存在时将key改为newkey
  • auth “123456”:验证密码是否正确

服务器命令

  • BGSAVE:异步保存数据到磁盘
  • CLIENT LIST:客户端列表
  • SHUTDOWN [NOSAVE] [SAVE]:异步保存/不保存到数据库,并关闭
  • SLAVEOF host port:将当前服务器变为指定服务器的从属

数据类型

支持string、hash、list、set、zset;

  • string,2进制安全,一个可以存储512m
getrange name 4 5:返回第5-第6个
getset key value:设置新值,并返回旧值
mget key key2:获取多个
incr key:加1
incrby key 5:加5
incrbyfloat key 5.0:加浮点数
decr/decrby类似
append key value:key存在,其value追加
  • 每个 hash 可以存储 232 -1 键值对(40多亿)。
127.0.0.1:6379> del name
127.0.0.1:6379> HMSET name field1 "ydfind" field2 "ydfind1"
127.0.0.1:6379> HGET name field1
HGETALL key
HDEL key field
hexists key field
hkeys key:返回所有key
hvals key:返回所有值
hmget key field1 field2
hset key field value1:单个设置
  • List双向列表,增删快
lpush name mongodb value2 value3
rpush name mysql
lrange name 0 10
blpop/brpop key1 timeout:移除获取第1或最后元素,没有的话,会阻塞
brpoplpush/rpoplpush source target timeout:元素移到另外一个列表,带b会阻塞
lindex key 2:根据索引取值
LINSERT mylist BEFORE/AFTER "World" "There":在值前或后插入
llen key:长度
lpop key:移除并获取第一个元素
LREM mylist -2 "hello":从尾开始移除2个hello
ltrim start stop:对表进行修剪
  • Set为string的无序集合,通过哈希表实现,故增删查复杂度O(1)。
sadd key member
smembers key
scard key:数量
sdiff key1 key2:集合差集
sdiffstore dest key1 key2:差集保存
sunion key1 key2:并集
sinter key1 key2:交集
sismember key1 mem:是否是成员
smove key1 key2 mem:移动元素
spop key:移除并返回 随机一个数
srem key mem1, mem2:移除一个或多个元素
  • Zset中member唯一,但score可以相同,更加score排序
zadd key score member 
// 默认按score从小到大排序
zrangebyscore name -10 10
ZCARD key:成员数
ZCOUNT key min max:指定区间数量
ZRANGE runoobkey 0 10 WITHSCORES
ZRANK key member:返回指定成员索引
ZSCORE key member:返回成员分数

订阅

SUBSCRIBE mychannel channel2
SUBSCRIBE mychannel
punsubcribe channel:退订
PUBLISH mychannel "this is first talk"

事务

中间某条指令的失败不会导致前面已做指令的回滚,也不会造成后续的指令不做

MULTI
...其他命令
EXEC
DISCARD:相当于回滚吧

备份保存

  • SAVE:保存----------------安装目录下的dump.rdb
  • BGSAVE:后台执行
127.0.0.1:6379> config get dir
1) "dir"
2) "C:\\WINDOWS\\system32"

在这里插入图片描述
恢复
将dump.rdb移到安装目录,重新启动客户端即可

安全

  • config get requirepass:查看是否需要密码连接
  • config set requirepass “123456”:设置密码
  • redis-cli.exe -h 127.0.0.1 -p 6379 -a “123456”:登录时使用密码

性能测试

同时执行 10000 个请求来检测性能

C:\WINDOWS\system32>redis-benchmark -n 10000 -q
PING_INLINE: 1828.82 requests per second
PING_BULK: 1704.45 requests per second
SET: 1474.06 requests per second
GET: 1592.61 requests per second
INCR: 1645.82 requests per second
LPUSH: 1664.17 requests per second
LPOP: 1745.81 requests per second
SADD: 1820.17 requests per second
SPOP: 1815.87 requests per second
LPUSH (needed to benchmark LRANGE): 1855.98 requests per second
LRANGE_100 (first 100 elements): 1728.01 requests per second
LRANGE_300 (first 300 elements): 1676.73 requests per second
LRANGE_500 (first 450 elements): 1597.95 requests per second
LRANGE_600 (first 600 elements): 1210.95 requests per second
MSET (10 keys): 1639.34 requests per second

主机为 127.0.0.1,端口号为 6379,执行的命令为 set,lpush,请求数为 10000,通过 -q 参数让结果只显示每秒执行的请求数

C:\WINDOWS\system32>redis-benchmark -h 127.0.0.1 -p 6379 -t set,lpush -n 10000 -q
SET: 1821.83 requests per second
LPUSH: 1807.01 requests per second

Redis 分区

分割数据到多个Redis实例的处理过程,因此每个实例只保存key的一个子集。

不足

  • 涉及多个key的操作通常是不被支持的。

  • 涉及多个key的redis事务不能使用。

  • 数据处理较为复杂。比如你需要处理多个rdb/aof文件,并且从多个实例和主机备份持久化文件。

  • 增加或删除容量也比较复杂。redis集群大多数支持在运行时增加、删除节点的透明数据平衡的能力,但是类似于客户端分区、代理等其他系统则不支持这项特性。然而,一种叫做presharding的技术对此是有帮助的。

  • 范围分区

  • 哈希分区。例如:key --(函数)–> 整数 --(%m余数)–> 映射到Rm实例;

其他

在线编辑器http://try.redis.io/
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值