没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
Redis 特性和应用场景
Redis 特性
速度快
Redis 使用标准 C 编写实现,而且将所有数据加载到内存中,所以速度非常快。官方提供的数据
表明,在一个普通的 Linux 机器上,Redis 读写速度分别达到81000/s 和110000/s。
数据结构
可以将 Redis 看做“数据结构服务器”。目前,Redis 支持5种数据结构。
持久化
由于所有数据保持在内存中,所以对数据的更新将异步地保存到磁盘上,Redis 提供了一些策略
来保存数据,比如根据时间或更新次数。数据超过内存,使用 swap,保证数据;
memcacache 不能持久化,mongo 是部分在内存;
自动操作
Redis 对不同数据类型的操作是自动的,因此设置或增加 key 值,从一个集合中增加或删除一个
元素都能安全的操作。
支持多种语言
Redis 支持多种语言,诸如 Ruby,Python, Twisted Python, PHP, Erlang, Tcl, Perl, Lua,
Java, Scala, Clojure 等。
主-从复制
Redis 支持简单而快速的主-从复制。
官方提供了一个数据,Slave 在21秒即完成了对 Amazon 网站10Gkey set 的复制。
Sharding
很容易将数据分布到多个 Redis 实例中,但这主要看该语言是否支持。目前支持 Sharding 功能
的语言只有 PHP、Ruby 和 Scala。
1. redis 数据使用方式
redis 的作者 antirez 曾笑称其为一个数据结构服务器(data structures server),redis 的
所有功能就是将数据以其固有的几种结构保存,并提供给用户操作这几种结构的接口。
我们可以想象我们在各种语言中的那些固有数据类型及其操作。
Redis 的几种使用方式
Strings
Hashs
Lists
Sets
Sorted Sets
Pub/Sub
Transactions
Redis 的七种特性以及适合的应用场景:
1.1. Strings
Strings 数据结构是简单的 key-value 类型,value 其实不仅是 String,也可以是数字。使用
Strings 类型,完全实现目前 Memcached 的功能,并且效率更高。还可以享受 Redis 的定时
持久化,操作日志及 Replication 等功能。除了提供与 Memcached 一样的 get、set、incr、decr
等操作外,Redis 还提供了下面一些操作:
获取字符串长度 strlen
往字符串 append 内容 append
设置和获取字符串的某一段内容 setrange getrange
设置及获取字符串的某一位 getrange
批量设置一系列字符串的内容
String 是最简单的数据类型,一个 key 对应一个 Value,String 是二进制安全的。它可以包含
任何数据,图片或者其他序列化后的对象
方法
说明
特性
set
设置 key 对应的的值为 String 类型的 value
get
获取对应 key 对应的 String 的值,如果不存在返
回 nil
setnx
设置可以为对应的值为 String 类型的 value,如
果 key 存在返回 0 不覆盖,不存在返回 1
nx 的意思为 not exist
Set the value of a key, only if the
key does not exist
setex
置 key 对应的值为 String 类型的 value,并指定此
键值对应的有效期
SETEX key seconds value
例:setex mykey 10 你好
setrange
设置 key 的 value 的子字符串
setrange key 位置 替换的内容
如果替换内容没有原 value 长,
则原 value 剩余的内容将被保
留
mset
一次设置多个 key 的值,成功返回 ok,失败返回
0,要成功都成功,要不成功全部失败。
mset key1 内容一 key2 内容二
msetnx
一次设置多个 key 的值,成功返回 ok,失败返回
0,不覆盖已经存在的值,要成功都成功,要失
败都失败。
getset
设置 key 的值并返回 key 的旧值
getset key newValuse
getrange
获取 key 对应的 value 子字符串
getrange key 0 5 //获取前 6 个
字符
mget
批量获取
mget key1 key2 key3 // 没 有 设
置则返回空
incr
对 key 的值做增加操作,并返回新的值
+1
incrby
对可以的 value 加指定的值,
key 如果不存在会设置 key 并
value 为 0
incrby key1 5 //对 key1 的值加
5
decr
对 key 的值做减减操作
-1
decrby
对 key 的值减去指定值
append
给指定 key 的字符串追加 value,返回新的字符
串长度
strlen
取指定 key 的 value 值的长度
1.2. Hashs
在 Memcached 中,我们经常将一些结构化的信息打包成 hashmap,在客户端序列化后存储
为一个字符串的值,比如用户的昵称、年龄、性别、积分等,这时候在需要修改其中某一项
时,通常需要将所有值取出反序列化后,修改某一项的值,再序列化存储回去。这样不仅增
大了开销,也不适用于一些可能并发操作的场合(比如两个并发的操作都需要修改积分)。
而 Redis 的 Hash 结构可以使你像在数据库中 Update 一个属性一样只修改某一项属性值。
它是一个 String 类型的 field 和 value 的映射表,它的添加和删除都是平均的,hash 特别适合
用于存储对象,对于将对象存储成字符串而言,hash 会占用更少的内存,并且可以更方便
的存取整个对象. 它和 java 的 HashMap 完全类似
方法
说明
特性
hset
设置一个 hash 的 field 为指定值,如果 key 不存在则先创建
hset tab ke1 val1
hget
获取某个 hash 的某个 field 值
hget tab ke1
hsetnx
类似 string 只是操作的是 hash
hmset
批量设置 hash 的内容
hmget
获取 hash 表的全部 key 值
Hmget key field1
field2
hincrby
给 hash 表的某个字段增加值
hexists
判断 hash 表中某个 key 是否存在
hlen
返回 hash 表中的 key 数量
hdel
删除指定 hash 表的某个键值对
hkeys
返回 hash 表中所有的 key
剩余17页未读,继续阅读
资源评论
小小哭包
- 粉丝: 1899
- 资源: 3854
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功