龙空技术网

redis 个人使用总结

码农 5450

前言:

当前姐妹们对“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实际使用