Redis数据结构

2018-09-25  本文已影响0人  王哈哈哈哈哈

Redis的数据结构

五种数据类型

Key定义的注意点

不要超过1024字节 可能会降低查找效率

会降低key的可读性

例如 user:123456789,user:987654321

存储String

字符串基本命令

命令 操作 结果解释
set set home xiaogao set key 为 home 值为xiaogan
get get home 返回 xiaogan
getset getset home wuhan 获取home 并更改home的值为wuhan
del del people 删除键为peoplo的数据
incr incry num 设置num 为自增
decr decr num 设置num 为自减
incrby incrby num5 5 设置num5 为自增 且跨度为5
decrby decrby num5 3 设置num5 为自减 且跨度为3
append append num5 123 在num5键所对应的值后面添加123

存储Hash

Hash基本命令

命令 操作 结果解释
hset hset myhash username whh key为myhash的哈希中set一个key为username 值为 whh的键值对
hget hget myhash username 获取key为myhash的哈希的username
hmset hmset pojo username tom age 18 key为pojo的哈希中set两个 username tom和age 18 键值对
hmget hmget pojo username age 获取pojo哈希中的username和age的值
hgetall hgetall pojo 输出为"username" "whh" "age" "18"
hdel hdel pojo username 删除pojo中的username键值对
hincrby hincrby pojo age 2 pojo中的age的值变为20
hexists hexists pojo sex 判断pojo哈希中是否存在sex的键,存在返回1不存在返回0
hlen hlen pojo 判断pojo哈希中又多少个键值对
hkeys hkeys pojo "username" "age"
hvals 命令 "tom" "18"

存储list

存储list常用命令

命令 操作 结果解释
lpush lpush listleft a b c 1 2 3 表示从左侧插入,元素顺序 list:[3 2 1 c b a]
rpush lpush listright a b c 1 2 3 表示从右侧插入,元素顺序 list:[a b c 1 2 3]
rpop rpop listleft 元素顺序变为 list:[3 2 1 c b a]
lrange lrange listleft 0 -1 便利所有元素,0表示第一个元素(star),-1表示最后一个元素(end)
llen llen listleft 查看listleft列表的长度
lpushx lpushx listleft x 在listleft中最左边插入元素x
lrem lrem test 3 3 test:[1 2 3 1 2 3 1 2 3]执行操作后list:[1 2 1 2 1 2]第一个三大于0从左边开始删除值为3的元素删除3个
lset lset test 2 hhh 把test的列表角标为2的元素替换成hhh
linsert linsert test before 2 hhh 把test的列表角标第一个元素2之前插入一个元素hhh
linsert linsert test after 2 hhh 把test的列表角标第一个元素2之后插入一个元素hhh
rpoplpush rpoplpush list1 list2 删除list1的右边的元素删除插入到list2z

存储Set

存储Set常用命令

命令 操作 结果解释
sadd sadd myset a b c 向myset集合中添加 a b c 三个元素
srem sadd myset c myset集合中删除 c 元素
smembers smembers myset 查看myset集合中的元素
sismember sismember myset 9 查看myset集合中有没有元素9 有返回1没有返回0
sdiff sdiff set1 set2 差集
sinter sinter set1 set2 交集
sunion sunion set1 set2 并集
scard scard set1 set1集合中元素的数量
randmember randmember set1 随机获取set1集合中的一个元素
sdiffstore sdiffstore s set1 set2 set1与set2的差集存储到s集合中
sinterstore sinterstore s set1 set2 set1与set2的交集存储到s集合中

存储Sorted-set有序集合

命令 操作 结果解释
zadd zadd mysort 70 zs 80 ls 90 ww 有序的键值对根据数字从低到高升序
zscore zscore mysort ww 获取ww的值
zrem zrem mysort ww 删除ww
zcard zcard mysort 获取mysort的长度
zrange zrange mysort 0 -1 获取所有的key(有序的)
zrange zrange mysort 0 -1 withscores 获取所有的键值对从小到大
zrevrange zrevrange mysort 0 -1 withscores 获取所有的键值对从大到小
zremrangebyrank zremrangebyrank mysort 0 3 按范围删除m'y'sort的元素

Redis特性

多个数据库 默认使用第一个数据库,总共又16个分别是0-15

Redis事务

Redis持久化方式的四种方式

redis 高性能是因为在内存中,
内存中同步到硬盘中就是持久化操作

rdb方式:

优势:只有一个文件,时间间隔的数据,可以归档为一个文件,方便压缩转移(就一个文件)

劣势:如果宕机,数据损失比较大,因为它是没一个时间段进行持久化操作的。也就是积攒的数据比较多,一旦懵逼,就彻底懵逼了

配置文件: redis.windows.conf

RDB方式:
194行

save 900 1   //  900秒 至少1个key发生变化就写入磁盘
save 300 10  //  300秒 至少10个key发生变化就写入磁盘
save 60 10000  //  60秒 至少10000个key发生变化就写入磁盘

228行

dump.rdb   //  文件名 The filename where to dump the DB

238行

dir ./        //当前文件目录

AOF持久化

优势:数据安全, 每秒同步,每修改同步,不同步

劣势:如果宕机 这1s的数据就没了。

每修改同步,安全,但是效率慢。
对于日志的写入方式采用append模式,在写的过程中发生宕机,写了一半,宕机,下次启动前工具会解决数据一致性问题。如果日志过大,redis会启动重写日志。

配置文件:redis.windows.conf

在redis.windows.conf中开启 appendnly yes 581行

选择一种同步策略 appendfsync always(每次操作同步,效率低,最安全)、everysec(每秒同步) 、no(不同步)

上一篇下一篇

猜你喜欢

热点阅读