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投票机制,超过半数当选








翻身农奴把歌唱
本文详细介绍了Redis数据库的特性和各种操作命令,包括数据类型的使用、数据生命周期的管理、列表和集合的操作等,并探讨了RDB和AOF两种持久化方式。
1489

被折叠的 条评论
为什么被折叠?



