数据与数据之间没有关联关系!!!
1、数据模型简单
2、需要灵活性更强的IT系统
3、对数据库性能要求高
4、不需要高度的数据一致性
5、对于给定key,比较容易映射复杂值的环境
CAP:
C:Consistency 强一致性
A:Availability 可用性
P:Partition tolerance 分区容错性
(Zookeeper保证CP)、(Eureka保证AP)
NoSQL数据库分类:
1、键值(Key-Value)存储数据库:Redis等
2、列存储数据库:HBase等
3、文档型数据库:MongoDb等
4、图形(Graph)数据库:Neo4J等
Redis命令:
del key:删除键 set key value:设置一个键值对
keys *:打印所有的键 exists key:检查key是否存在
expire key seconds:给key设置过期时间 ttl key:查看key的剩余生存时间
pttl key:以毫秒为单位返回剩余生存时间
persist key:移除key的过期时间,永久保存
randomkey:从当前数据库返回随机一个key
rename keyOldName keyNewName:给key重新起个名字
move key database:把key移到database数据库中(相当于剪切),key的位置支持表达式
typekey:返回key的类型
key的命名:
不要太长,也不要太短 ,可以使用 “ : ” 来进行命名,如:user:name、user:password
key的名称区分大小写!!!
Redis数据类型:
String(字符串)
String(字符串)
二进制安全,可把文件作为字符串来存储、计数器
取值:get key
setnx key value:只有key不存在的时候才会把value赋值给key(可解决分布式锁)
getrange key start end:获取key的value值,结果是从start到end结束
getset key_name value:用于设置指定的值,并返回key的旧址,如果key不存在,返回null;
strlen key:返回key值得长度
incr key_name:将key中的值自增1,当没有这个key时,会先创建key,并初始化值为1
decr key_name:将key中的值减1
incrby key_name num:设置key自增数num
decrby key_name num:设置key自减数num
List(列表)
Set(集合)
Sorted Set(有序集合)
hash(散列)
非常适合存储JavaBean对象
命令:
hset key field value:存入设置值
hget key field:取值
hmset key field value field value...:一次给一个对象的多个属性赋值
hmget key field field ...:一次获取多个属性的值
hgetall key:获取key得所有属性和值
hkeys key:获取key得所有属性
hlen key:获取key中得属性个数
hdel key field...:删除key中的属性field
hincrby key field count:给key中属性的值自增count
hexists key field:判断key中field属性是否存在