redis将散裂中某个值自增_Redis总结

一 初识Redis

1,Redis 使用内存存储的非关系型数据库,除了各种数据类型的专有命令,还支持批量操作(bulk operation)和不完全(partial)的事务。Memcached 使用内存存储的键值对缓存。MongoDB使用硬盘存储的非关系性数据库.

2,Redis可以存储键与5种不同数据结构类型之间的映射,这5种数据类型分别是String(字符串)、List(列表)、set(集合)、hash(散列)、zSet(有序集合)。zSet某种意义上来说是Redis特有的数据结构。

3, String 字符串命令

(1)set 设置存储在给定键中的值

(2)get 获取存储在给定键中的值

(3)del 删除存储在给定键中的值

4,List 列表命令

(1)Rpush 将给定的值推入列表的右(lpush 左)端

(2)lrance 获取列表在给定范围上的所有值

(3)lindex 获取列表在给定位置的单个元素

(4)lpop 从列表的左端弹出一个值,并返回这个值

5,set 集合命令

(1)sadd 将给定的元素添加到集合

(2)smembers 返回集合包含的所有元素

(3)sismember 检擦给定的元素是否已存在于集合中

(4)srem 如果给定的元素存在于集合中,那么移除此元素

6, hash 散列命令(各个不相同的键无序排列)

(1)hset 在散列里面关联起给定的键值对(注:此命令用于添加键值对到散列,命令会返回一个值来表示给定的键是否已存在)

(2)hget 获取指定散列键的值

(3)hgetall 获取散列包含的所有键值对

(4)hdel 如果给定的键在散列里已存在,那么移除这个键

7, zset 有序集合命令

有序集合和散列一样都用于存储键值对:有序集合的键被称为成员,每个成员都各不相同;而有序集合的值则被称为分值,必须为浮点型。有序集合是Redis里唯一一个既可以根据成员访问分值,又可以根据分值以及分值的排列顺序来访问元素的结构。

(1)zadd 将一个带有分值的成员添加到有序集合里面

(2)zrange 根据元素在有序排列中的位置,从有序集合中获取多个元素

(3)zrangebyscore 获取有序集合在给定分值范围内的所有元素

(4)zrem 如果给定的成员存在于有序集合,那么移除该成员

二 使用Redis构建Web应用

1,Redis 登录与Cookie缓存

2,使用Redis实现购物车

购物车的定义:每一个用户的购物车都是一个散列,这个散列存储了商品的id和商品订购数量之间的映射。对商品数量的验证有web应用程序负责,我们需要做的是当商品的订购数量变化时对购物车进行更新:如果商品订购数量大于0,那么程序会将这个商品的id和定购量添加到散列表里,如果用户订购的商品在散列里已存在,那么新的订购熟练将会覆盖原来的数量;相反如果订购数量不大于0,那么就会从散列里删除该商品。

3,页面缓存

4,数据行缓存

数据缓存成json格式的原因,因为json格式简明易懂,目前所有拥有Redis客户端的编程语言都带有能高效地编码和解码json格式的函数库。所以不用xml。

5,网页分析

三 Redis命令

1,字符串 Redis中的自增和自减命令

INCR INCR key-name 将键存储的值加上1

DECR DECR key-name 将键存储的值减去1

INCRBY INCRBY key-name amount 将键存储的值加上整数amount

DECRBY DECRBY key-name amount 将键存储的值减去整数amount

INCRBYFLOAF INCRBYFLOAF key-name amount 将键存储的值加上浮点数amount

当用户将一个值存储到Redis字符串时,有以下三种情况:如果这个值可以被解释成十进制整数或者浮点数,那么Redis允许用户对这个字符串执行各种INCR*和DECR*操作

如果用户对一个不存在的键或者一个保存了空字符串的键执行了自增或者自减操作,那么Redis会把这个值当做0来处理

如果用户对一个值无法解释为整数或者浮点数的字符串键执行自增或者自减操作,那么Redis将会返回一个错误。

供Redis处理子串和二进制位的命令

APPEND APPEND key-name value 将值value追加到给定键key-name当前存储值的末尾

GETRANGE GETRANGE key-name start end 获取一个由start到end范围内所有字符组成的字串,包括开头和结尾

SETRANGE SETRANGE key-name offset value 将从start偏移量开始的字串设置为给定值

GETBIT GETBIT key-name offset value 将字符串看做二进制位串,并返回位串中偏移量为offset的二进制位的值

SETBIT SETBIT key-name offset value 将字符串看做二进制位串,并将位串中偏移量为offset的二进制位的值设置为value

BITCOUNT BITCOUNT key-name [start end] 统计二进制位串中值为1的二进制位的数量,如果有偏移量,这只统计便宜量内的

BITOP BITOP operation dest-key key-name [key-name…] 对一个或多个二进制位串执行包括并(and) 或(or) 异或(xor) 非(not)在内的任意一种按位运算操作,并将计算得出的结果保存在dest-key键里面

2,列表 常用命令

LINDEX LINDEX key-name offset 返回列表中偏移量为offset的元素

LRANGE LRANGE key-name start end 返回列表从start到end范围内的所有元素,包含start和end元素

LTRIM LTRIM key-name start end 对列表进行修剪,只保留从start到end的元素,start和end元素也会被保留

阻塞式的列表弹出命令以及在列表之间移动元素的命令

BLPOP BLPOP key-name [key-name…..] timeout 从第一个非空列表中弹出位于最左端的元素,或者在timeout秒之内阻塞并等待可弹出的元素出现

BRPOP BRPOP key-name [key-name…..] timeout 从第一个非空列表中弹出位于最右端的元素,或者在timeout秒之内阻塞并等待可弹出的元素出现

RPOPLPUSE RPOPLPUSE source-key dest-key 从source-key列表中弹出位于最右端的元素,然后将这个元素推入dest-key列表的最左端,并向用户返回这个元素。

BRPOPLPUSE BRPOPLPUSE source-key dest-key timeout 从source-key列表中弹出位于最右端的元素, 然后将这个元素推入dest-key列表的最左端,并向用户返回这个元素。如果source-key为空,那么在timeout秒之内阻塞并等待可弹出的元素出现

3,集合 常用命令

SCARD SCARD key-name 返回集合包含元素的数量

SRANDMEMBER SRANDMEMBER key-name [count] 从集合里随机返回一个或多个元素。当count为整数时,命令返回的随机元素不会重复;为负数时,命令返回的随机数有可能重复

SPOP SPOP key-name 随机的移除集合重点一个元素,并返回移除的元素

SMOVE SMOVE source-key dest-key item 如果集合source-key包含元素item,那么从集合source-key里面移除item,并将item添加到dest-key集合中;如果item被成功移除,那么命令返回1,否者为0

用于组合和处理多个集合的Redis命令

SDIFF SDIFF key-name [key-name…] 返回那些存在于第一个集合。但不存在于其他集合中的元素

SDIFFSTOPE SDIFFSTOPE dest-key key-name [key-name…] 将那些存在于第一个集合,但不存在于其他集合中的元素存储到dest-key键里面

SINTER SINTER key-name [key-name….] 返回那些同时存在于所有集合中的元素(交集运算)

SINTERSTORE SINTERSTORE dest-key key-name [key-name….] 将那些同时存在于所有集合中的元素(交集运算)存储到dest-key键中

SUNION SUNION key-name [key-name….] 返回那些至少存在于一个集合中的元素(并集运算)

SUNIONSTORE SUNIONSTORE dest-key key-name [key-name….] 将那些至少存在于一个集合中的元素存储到dest-key键中

4,散列 用于添加和删除键值对的命令

HMGET HMGET key-name key [key….] 从散列里获取一个或者多个键的值

HMSET HMSET key-name key value [key value….] 为散列里一个或者多个键设置值 (批量操作)

HLEN HLEN key-name 返回散列包含的简直对数量

展示Redis散列更高级特性的命令

HEXISTS HEXISTS key-name key 检查给定的键是否存在于散列中

HKEYS HKEYS key-name 获取散列包含的所有键

HVALS HVALS key-name 获取散列包含的所有值

HINCRBY HINCRBY key-name key increment 将键key存储的值加上整数increment

HINCRBYFLOAT HINCRBYFLOAT key-name key increment 将键key存储的值加上浮点数increment

5,有序集合的常用命令

ZCARD ZCARD key-name 返回有序集合包含的成员数量

ZINCRBY ZINCRBY key-name increment member 将member成员的分值加上increment

ZCOUNT ZCOUNT key-name min max 返回分值介于min和max之间的成员数量

ZRANK ZEANK key-name member 返回成员member在有序集合中的排名

ZSCORE ZSCORE key-name member 返回成员member的分值

有序集合的范围型数据获取命令和范围型删除命令

ZREVRANK key-name member 返回有序集合里成员member的排名,成员按照分值从大到小排列

ZREVRANGE key-name start stop [WITHSCORES] 返回有序集合给定排名范围内的成员,成员按照分值从大到小排列

ZREVRANGEBYSCORE key max min [WITHSCORES] 获取有序集合中介于max和min范围内的成员,并按照分值从大到小返回他们

ZREMRANGEBYRANK key-name start stop 移除有序集合中排名介于start和stop之间的所有成员

ZREMRANGEBY SCORE key-name max min 移除有序集合中排名介于min和max之间的所有成员

ZINTERSTORE dest-key key-count key [key…] [WEIGHTS weight[weight… ]] [AGGREGART SUM|MIN|MAX] 对给定的有序集合执行类似于集合的交集运算

ZUNIONSTORE dest-key key-count key [key…] [WEIGHTS weight[weight… ]] [AGGREGART SUM|MIN|MAX] 对给定的有序集合执行类似于集合的并集运算

6,发布与订阅的命令

SUBSCRIBE channel [channel…] 订阅给定的一个或多个频道

UNSUBSCRIBE [channel [channel…]] 退订给定的一个或多个频道,如果执行时没有给定频道,那么退订所有频道

PUBLISH channel message 像给定的频道发送信息

PSUBSCRIBE pattern [psttern….] 订阅鱼给定的模式相匹配的所有频道

PUNSUBSCRIBE [pattern [psttern….]] 退订给定的模式,如果执行时没有给定任何模式那么退订所有模式

7, Redis事务

Redis的基本事务:需要用到MULTI命令和EXEC命令,这种事务可以让一个客户端在不被其他客户端打断的情况下执行多个命令。和关系数据库中可以进行回滚(rollback)的事务不同,在Redis中,被MULTI命令和EXEC包围的所有命令会一接一个的执行,直到所有的命令执行完毕。当一个事务执行完毕后,Redis才回处理其他客户端。

8,键的过期时间

在使用Redi存储数据时,有些数据仅在一段时间内有用,虽然我们可以在数据过期之后手动删除,但更好的方法是使用Redis提供的键过期操作删除数据。

键过期命令只能为整个键设置过期时间,而没有办法为键里单个元素设置过期时间。

用于处理Redis过期时间的命令

PERSIST key-name 移除键的过期时间

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

EXPIPE key-name seconds 让给定的键在指定的秒数之后过期

EXPIPEAT key-name timestamp 将给定键的过期时间设置为给定UNIX时间戳

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

PEXPIPE key-name milliseseconds 让给定的键在指定毫秒数之后过期

PEXPIPEAT key-name timestamp- milliseseconds 将一个毫秒精度的UNIX时间戳设置为给定键的过期时间

四 数据安全与性能保障

1,数据持久化选项

Redis提供两种不同的持久化方法来将数据存储到硬盘里。第一种方法是 快照(snapshotting),它可以将存在于某一时刻的所有数据都写入硬盘里。第二种方法是 只追加文件(append-only file,AOF),它会在执行写命令时,将执行的写命令复制到硬盘里。这两种方法既可单独使用,又可同时使用。

将内存里的数据存储到硬盘上的一个主要原因是为了在以后重用数据,或者是为了防止系统故障而将数据备份到一个远程系统。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值