1、 Redis概述
什么是Nosql:Nosql叫做非关系型数据库,为了解决高并发、高可用、高可扩展,大数据存储等一系列问题而产生的数据库解决方案。
Redis是使用ANSI C语言开发的一个高性能Key-Value数据库,是当今速度最快的内存型非关系型(NoSQL)数据库,可以存储键和五种不同类型的值之间的映射。键的类型只能为字符串,值支持五种数据类型:字符串、列表、集合、散列表、有序集合。
Redis 支持很多特性,例如将内存中的数据持久化到硬盘中,使用复制来扩展读性能,使用分片来扩展写性能。
2、Redis数据类型
String数据结构是简单的Key-value类型,value可以是String也可以是数字。
常用命令:
get:获取key对应的vlaue
set:为一个key设置value,可配合ex/px参数设置key的有效期
getset:为一个Key设置value,并返回该key的原value
mget:获取多个key对应的value
mset:为多个key设置value
incr/incrby:将key对应的value自增1(或者指定的整型数值),并返回自增后的值。
decr/decrby:同上,自减。
应用场景:String是最常用的一种数据类型,普通的key/value存储都可以化为此类,即可以完全实现目前Memcached的功能,并且效率更高。还具有Redis的持久化,操作日志以及Replication等功能。除了和Memcached一样有get set incr decr等操作外,Redis还具有如下操作:
- 获取字符串长度
- 对字符串append内容
- 设置和获取字符串的某一段内容
- 设置和获取字符串的某一位bit
- 批量设置一系列字符串的内容
使用场景:常规key-value缓存应用。常规计数:微博数、粉丝数。
实现方式:String在redis内部存储默认就是一个字符串,被redisObject所引用,当遇到incr ,decr等操作时会转成数值型进行计算,此时redisObject的encoding字段为int
key-value ,单点登录时采用这种数据结构存储用户信息,key为cookieId,value存放结构化对象。
常用命令:
hset:将Key对应的hash中的field设置为value。如果该hash不存在,会自动创建一个。
hget:返回指定hash中field字段的值。
hmset/hmget:同hset和hget,可以批量操作同一个key下的多个fi