前言:
当前姐妹们对“redis实际使用”大概比较珍视,你们都想要学习一些“redis实际使用”的相关内容。那么小编在网上收集了一些关于“redis实际使用””的相关内容,希望看官们能喜欢,兄弟们一起来了解一下吧!使用事项
1、对比关系型数据库,我们对redis key的设计一般有以下两种格式:
表名:主键名:主键值:列名
表名:主键值:列名 在所有主键名都是id的情况下(其实我个人不喜欢这种情况,比如user表,它的主键名就应该是user_id,而不是id,这样在表与表之间关联的时候一目了然)
2、redis中事务只支持隔离和一致,不支持原子和持久。所以可以保证批量命令的执行,但无法保证数据完整性。
3、redis是单线程安全的,并发问题主要在于,若并发取出同一个数据,再进行计算后,再并发存入redis,那后写入的会覆盖先写入的,程序上理论应得结果就会异于数据库最后所存数据。
4、redis持久化的两种方式:
1) RDB(默认) 适用于内存较大的机器,使用快照保存数据,快照文件较小方便容灾,快照时会突然占用大量内存(数据越多内存占用越大),默认已配置快照触发条件。
2) AOF 适用于内存较小的机器,使用日志保存数据,日志文件较大不便容灾,每秒同步或者每修改同步
5、一般应用
主从复制
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缓存)
其他
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实际使用