Nosql: not only sql,作为关系型数据库的补充
redis:开源高性能键值对key-value数据库
特征:1.数据间没有必然的关联关系 2.单线程 3.5种数据类型
redis数据存储格式:key始终是字符串,value是5种类型
set key value; get key
delete成功返回integer 1,否则 0
mset/mget 添加/获取多个数据
strlen key 获取字符个数
append key value 追加,返回的是字符的长度
使用append追加时,如果数据库中有,追加,没有就添加
单数据操作与多数据操作执行次数相同,发送和接收时间不同
多数据操作在数据量极大时会占用线程
incr:增
incrby key value :增加指定的值
incrbyfloat key value:小数
decr:减
decrby:减指定值
类型转换、原子性、范围(2^63-1)
设置数据的生命周期:
setex key time value :单位s
psetex:单位ms
redis以string类型修改简单,自增
key的设置约定:set 表名:主键名:主键值:字段名 value
redis用string类型的话,字段名太多,查询复杂,用json(对象)修改麻烦
右边相当于一个键值对,或者整体看成两个redis
hset key field value
hget key field
hgetall key
hdel key field
多条数据:
hmset key field value field value
hmget key field1 field2…
hlen获取字段/field的数量
hkeys获取的是所有的字段名/field
hvals获取所有的字段值/value
hincrby key field increment:增加字段值
lpush从左边插入,rpush从右边插入,lpush后用lrange查询是反的
插入多条数据:lpush key a b c
lrange的start和stop都是索引,表示从第几个开始,第几个结束
如果stop为负数,表示倒数第几个
lpop和rpop:pop完之后的元素不再存在于list中
blpop返回两个值:
list0: 从哪儿获取
d:取出的元素
lrem删除指定元素和个数
limit 0 3 指从索引为0(第一个元素)开始,查询数目限制为3个
在求交集的时候只有三个sorted set的member相同的时候∩
aggregate max返回三个member中score最大的
zrank返回的是索引
ttl返回值有三种,实际的失效时间,-1(未设置),-2(已失效)
persist将时效性转换为永久性
str3 rename为str的时候,str3的值也将str的值覆盖
renamenx如果将修改成的名字不存在,那么可以修改,否则修改失败返回0
ping:测试服务器是否连接
dbsize:查看当前数据库中有多少个key
flushdb:清空当前数据库的数据
flushall:删除所有数据库数据
jedis:java与redis数据库连接的通道
创建maven工程,导入依赖
持久化
RDB存储方式
save指令: 用来保存当前的数据快照,保存形式为.rdb文件
bgsave指令:
会对数据产生影响:比如set会,get不会
不进行数据比对:两次set前后数值不变,也是发生了变化
AOF存储方式
取消事务discard
主观下限:一台sentinel认为master挂了
客观下限:超过半数sentinel认为master挂了
sentinel投票机制,超过半数当选
翻身农奴把歌唱