今天给你们分享的是Redis,若有不足之处,敬请指正,那么什么是Redis呢?redis
Redis是一个开源的,使用ANSI C 编写,高性能的Key-Value的NoSQL数据库数据库
前面咱们说到Redis的数据模型为键值对形式。接下来咱们来分析Redis的键key。缓存
redis的key 值是二进制安全的,这意味着能够用任何二进制序列做为key值,从形如”foo”的简单字符串到一个JPEG文件的内容均可以。 空字符串也是有效key值。安全
redis建议使用字符串作为key的类型服务器
将以下数据库表中的数据,转换为redis的key-value存储。数据结构
id | username | password | |
---|---|---|---|
1 | lisi | 111111 | lisi@163.com |
OKapp
OK性能
OK测试
"user:id:1:password".net
"user:id:1:username"
"user:id:1:email"
命令 | 做用 |
---|---|
exists key | 检查给定key是否存在。 |
del key | 删除一个key |
del key1 key2 key3 | 删除多个key |
keys pattern (模糊查找) | 查找全部符合给定模式 pattern 的 key |
expire key seconds | 指定key的过时时间。新添加的key,若是没有指定过时时间,则会一直保存。能够对一个已经带有生存时间的key执行EXPIRE命令,新指定的生存时间会取代旧的生存时间。 |
ttl key | 查看某个key的剩余过时时间,返回值:2 表示这个key已通过期返回1表示没有设置过时时间 返回其它 表示剩余的生存时间,单位为秒。 |
rename | 语法格式:rename key newkey将 key 更名为 newkey 。当 key 和 newkey 相同,或者 key 不存在时,返回一个错误。当 newkey 已经存在时, RENAME 命令将覆盖旧值。 |
type key | 查看key对应的value的数据结构类型 |
其它key命令见redis帮助文档 http://doc.redisfans.com/
string类型是redis最经常使用的数据结构类型,存储的值为字符串。
命令 | 做用 |
---|---|
set key value | 设置一个key,值为value,类型为String类型;若是这个key已经存在,则更新这个key的值。返回值1 表示成功0 表示失败 |
get key | 获取key对应的value值;若是key不存在,则返回nil |
mget key1 key2 | 一次获取多个key的值,若是对应key不存在,则对应返回nil |
incr key | 将 key 中储存的数字值增一,而后返回 |
decr key | 将 key 中储存的数字值减一,而后返回,若是这个key不存在,那么key的值会先被初始化为0,而后再执行INCR操做。若是这个key对应的value值,不能表示数字,则会返回一个错误 |
decrby key decrement | 将key减小对应的步长值 |
append key value | 若是key已经存在,则将value追加到这个key原先的value值的末尾。若是这个key不存在,则执行set操做 |
Redis的key是单线程模式,这就意味一瞬间只有一个线程可以持有这个key,因此可使用redis解决部分涉及线程安全的业务。
图示 |
---|
![]() |
图示 |
---|
![]() |
命令 | 做用 |
---|---|
lpush key value [value ...] | 将一个或多个值value插入到列表key的表头(即从左边插入) 若是 key 不存在,一个空列表会被建立并执行 LPUSH 操做。当 key 存在但不是列表类型时,返回一个错误。 |
rpush key value [value ...] | 尾部添加(从右向左),操做同上 |
llen key | 返回key对应list的长度,key不存在返回0,若是key对应类型不是list返回错误 |
lindex key index | index元素在list列表中的下角标,从0开始;lindex 是从左到右取元素 |
lrange key start stop | 获取指定区间的全部元素;下角标从0开始,0表示第一个元素,1表示第二个,依次类推;-1表示最后一个元素,-2表示倒数第二个元素,依次类推; |
lpop key | 移除并返回列表中的第一个元素 |
rpop key | 移除并返回列表中的最后一个元素 |
特色 |
---|
![]() |
命令 | 做用 |
---|---|
hset key field value | 设置hash field为指定值,若是key不存在,则先建立 若是field已经存在,那么将更新这个field的值 |
hget key field | 获取指定的hash field |
hmget key filed1....fieldN | 获取所有指定的hash filed |
hmset key filed1 value1 ... filedN valueN | 同时设置hash的多个field |
hexists key field | 测试指定field是否存在 |
hdel key field | 删除指定的hash field |
hlen key | 返回指定hash的field数量 |
hkeys key | 返回hash的全部field |
hvals key | 返回hash的全部value |
hgetall | 返回hash的全部filed和value |
节约内存空间
redis每建立一个键,都会为这个键储存一些附加的管理信息(好比这个键的类型,这个键最后一次被访问的时间等等)
redis的key相对于值来讲,更珍贵!!!
因此数据库里面的键越多,redis数据库服务器在储存附加管理信息方面耗费的内存就越多,在获取key对应的value值时cpu的开销也会更多
Hash结构能够将具备关联关系的一组key-value,存储到同一个hash结构中,从而减小key的数量。
须要设置键过时功能的key: Redis的key的过时功能只能对键操做,而Hash结构不能单独对某一个filed设置过时功能。
特色 |
---|
![]() |
命令 | 做用 |
---|---|
sadd key member [member ...](无序不重复) | 将一个或多个 member 元素加入到集合 key 当中,已经存在于集合的 member 元素将被忽略 |
smembers key | 返回集合 key 中的全部成员。不存在的 key 被视为空集合 |
spop key | 移除并返回集合中的一个随机元素。被移除的随机元素。当key不存在或key是空集时,返回nil |
scard key | 返回集合key的基数(集合中元素的数量)。集合的基数。当key不存在时,返回0 |
sinter key [key ...] 交集 | 返回一个集合的所有成员,该集合是全部给定集合的交集。不存在的 key 被视为空集 |
sunion key [key ...] 并集 | 返回一个集合的所有成员,该集合是全部给定集合的并集。不存在的 key 被视为空集 |
sdiff key [key ...] 差集 | 返回一个集合的所有成员,该集合是全部给定集合之间的差集。不存在的 key 被视为空集 |
版权说明:欢迎以任何方式进行转载,但请在转载后注明出处!