redis 个人使用总结

《redis 个人使用总结》要点:
本文介绍了redis 个人使用总结,希望对您有用。如果有疑问,可以联系我们。

使用事项

1、对比关系型数据库,我们对redis key的设计一般有以下两种格式:

  • 表名:主键名:主键值:列名

  • 表名:主键值:列名 在所有主键名都是id的情况下(其实我个人不喜欢这种情况,好比user表,它的主键名就应该是user_id,而不是id,这样在表与表之间关联的时候一目了然)

2、redis中事务只支持隔离和一致,不支持原子和持久.所以可以保证批量命令的执行,但无法保证数据完整性.

3、redis是单线程平安的,并发问题主要在于,若并发取出同一个数据,再进行计算后,再并发存入redis,那后写入的会覆盖先写入的,程序上理论应得结果就会异于数据库最后所存数据.

4、redis持久化的两种方式:

1) RDB(默认) 适用于内存较大的机器,使用快照保留数据,快照文件较小方便容灾,快照时会突然占用大量内存(数据越多内存占用越大),默认已配置快照触发条件.

2) AOF 适用于内存较小的机器,使用日志保留数据,日志文件较大不便容灾,每秒同步或者每修改同步

5、一般应用

redis 个人使用总结

主从复制

1、从机只能读,无法写入任何数据

2、从机建立后,主机会将快照发给从机,从机获得主机所有数据

3、主机宕机后,从机不会推选出新主机,需启动一个哨兵—Sentinel进行管理

4、主机必需开启持久化,否则主机宕机后重新启动将会清空所有从机数据

5、若从机较多,则可以使用薪火相传方式,每台从机可以成为下一台从机的主机,即:Master <- Slave1 <- Slave2 <- Slave3...

6、slave of no one 该指令可以反客为主,将从机变为主机

集群实践(linux)

1、必要开启pidfile和append备份文件所在目录的当前用户操作权限

2、最好把redis-server/cli/trib.rb 命令加入 /usr/bin 中以便随地使用

3、注意是否安装了yum install ruby 和gem install redis

4、服务器需开启和开放相应的端口

5、连接集群需使用命令:redis-cli -c -p 端口

6、连接任意节点均可存取数据,但存数据操作只转移到主节点进行

7、若删除主节点,需移动哈希槽的值到另一个主节点,主节点个数要与原来启动集群时坚持一致,否则哈希槽分配会出现缺失

8、在4.0中试验 若节点挂掉,如主节点数量足够,似乎恢复该节点后并不会自动加入原有集群(待验证)

最常见应用场景:缓存(如session缓存)

redis 个人使用总结

其他

2:队列

3:排行榜/计数器

4:发布/订阅

5、setbit(bitmap)统计活跃用户

常规操作

字符串(Strings)

  • Get key-name - 获取存储在给定键中的值

  • Set key-name - 获取存储在给定键中的值

  • Del key-name - 删除存储在给定键中的值(适用于所有类型)

列表(Lists)

  • RPush list-key item - 将给定值推入列表的右端

  • LRange list-key start stop - 获取列表在给定范围上的所有值

  • LIndex list-key index - 获取列表在给定位置上的单个元素

  • LPop list-key - 从列表的左端pop出一个值,并返回该值

集合(Sets)

  • sadd set-key item - 将给定元素item添加到集合(返回0表示元素已存在于集合中,1表示添加成功)

  • smembers set-key - 返回集合中的所有元素

  • sismember set-key item - 检查给定元素item是否存在于集合中

  • srem set-key item - 如果item存在于集合中,移除该元素(返回移除元素的数量)

散列(Hashes)

  • hset hash-key sub-key value - 在散列中设置给定的键值对

  • hget hash-key sub-key - 在散列中获取指定键的值

  • hgetall hash-key - 获取散列中所有的键值对

  • hdel hash-key sub-key - 移除散列中的给定键(存在返回1,不存在返回0)

有序集合(Sorted Sets)

  • zadd zset-key score member - 将一个带有给定分值的成员添加到有序集合中

  • zrange zset-key start stop [withscores] - 根据元素在有序集合中所处的位置,从有序集合里面获取多个元素

  • zrangebyscore zset-key start stop [withscores] - 获取有序集合在给定分值范围内的所有元素

  • zrem zset-key member - 在有序集合中移除给定成员(存在返回1,不存在返回0)

  • zrevrank zset-key member - 返回有序集合成员 member的排名,成员依照分值从大到小排列

  • zrevrange zset-key start stop [withscores] - 返回有序集合给定排名范围内的成员,成员依照分值从大到小排列

其他命令(Other Commands)

  • sort source-key [BY pattern] [Limit offset count] [Get pattern [Get pattern ...]] [Asc|Desc] [Alpha] [Store dest-key] - 根据给定的选项,对输入的列表、集合或者有序集合进行排序,返回或存储排序的结果

发布/订阅(publish/subscribe)

  • subscribe channel [channel ...] - 订阅给定的频道(一个或多个)

  • unsubscribe [channel [channel ...]] - 退订给定的频道,如果没有给定频道,将退订所有频道

  • publish channel message - 向给定频道发送消息

  • psubscribe pattern [pattern ...] - 订阅给定模式匹配的频道

  • punsubscribe [pattern [pattern ...]] - 退订给定pattern匹配的所有模式,如果没有给定模式,将退订所有模式

过期时间(expiring keys)

  • persist key-name - 移除键的过期时间

  • ttl key-name - 查看给定键距离过期还有多少秒

  • expire key-name seconds - 让指定键在给定秒数后过期

  • expireat key-name timestamp - 将给定的过期时间设置为给定的Unix时间戳

  • pttl key-name - 查看给定键距离过期还有多少毫秒(version >= 2.6)

  • pexpire key-name milliseconds - 让指定键在给定毫秒数后过期(version >= 2.6)

  • pexpireat key-name timestamp-milliseconds - 将给定的过期时间设置为给定的毫秒级 精度的Unix时间戳(version >= 2.6)

位图操作(bitmap)

  • BITOP AND destkey key [key ...],对一个或多个 key 求逻辑并,并将结果保留到 destkey .

  • BITOP OR destkey key [key ...],对一个或多个 key 求逻辑或,并将结果保留到 destkey .

  • BITOP XOR destkey key [key ...],对一个或多个 key 求逻辑异或,并将结果保留到 destkey .

  • BITOP NOT destkey key,对给定 key 求逻辑非,并将结果保留到 destkey .

以上指令切勿死记硬背,需结合实践不断练习.此篇未介绍实际开发的配置,也便是jedis使用及集群具体配置,都将会在后续文章中展开介绍,如有任何纰漏之处,还希望大家不吝指正,谢谢支持!!

欢迎参与《redis 个人使用总结》讨论,分享您的想法,编程之家PHP学院为您提供专业教程。

相关文章

文章浏览阅读1.3k次。在 Redis 中,键(Keys)是非常重要的概...
文章浏览阅读3.3k次,点赞44次,收藏88次。本篇是对单节点的...
文章浏览阅读8.4k次,点赞8次,收藏18次。Spring Boot 整合R...
文章浏览阅读978次,点赞25次,收藏21次。在Centos上安装Red...
文章浏览阅读1.2k次,点赞21次,收藏22次。Docker-Compose部...
文章浏览阅读2.2k次,点赞59次,收藏38次。合理的JedisPool资...