分布式文件系统项目(二)

Redis

1、 数据库类型:

1、关系型数据库sql:操作数据库必须使用sql语句,数据存在磁盘:mysql,存储数据量大

2、非关系型数据库nosql:操作时不需要使用sql语句,数据默认存储在内存:速度快,效率高,存储数据量小,不需要数据库表,以键值对存储的

2、关系/非关系型数据库搭配使用

DDBMS:关系型数据库

1、所有数据存储在关系型数据据库

2、客户端访问服务器,有一些数据,服务器需要频繁的查询数据

        服务器首先将数据从关系型数据库中读出------>第一次

        将数据写入到redies当中

        客户端第二次包含以后访问服务器,从redies中读取数据

 3、redis两个角色

        1)服务器启动

                redis-server

                redis-server confFilename//根据配置文件配置启动

        2)客户端启动

                redis-cli:默认链接本地,绑定6379端口的服务器

                redis-cli -p 端口号

                redis-cli -h IP地址 -p 端口号:链接远程主机指定端口的redis

        3)通过客户端关闭服务器

                shutdown

        4)客户端测试命令

                ping [message]

4、redis中数据格式

键值对:key值必须是字符串-----"hello"

                value值可选:

                        String类型
                        List类型
                        Set类型
                        SortedSet类型
                        Hash类型

5、redis常用数据类型

  1.         String类型:字符串
  2.         List类型:存储多个string字符串的(更像一个数组)
  3.         Set类型:redis集合:元素不重复, 数据是无序的
  4.         SortedSet类型:排序集合, 集合中的每个元素分为两部分 :[分数, 成员] -> [66, ''tom'']
  5.         Hash类型:跟map数据组织方式一样: key:value  Qt -> QHash, QMap Map -> 红黑树            hash -> 数组 a[index] = xx

6、redis常用命令

String类型
1、key--->string
   value--->string
   #设置一个键值对string:string
    SET key value
  
   #通过key值取value
    GET key
   
   #同时设置一个或多个key-value 对
    MSET key value [key value ...]
   
   #返回所有(一个或多个) 给定key 的值
    MGET key [key ...]
   
   #如果key 已经存在并且是一个字符串,APPEND 命令将value 追加到key 原来的值的末尾。
   #如果key 不存在,APPEND 就简单地将给定key 设为value ,就像执行SET key value 一样
    APPEND key value

    #返回key 所储存的字符串值的长度。
    #当key 储存的不是字符串值时,返回一个错误。
    STRLEN key

    #将key 中储存的数字值减一。
    #如果key 不存在,那么key 的值会先被初始化为0 ,然后再执行DECR 操作。
    #如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。
    DECR key

    #将key 中储存的数字值增一。
    #如果key 不存在,那么key 的值会先被初始化为0 ,然后再执行INCR 操作。
    #如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。
    INCR key

    #将key 所储存的值减去减量decrement 。
    #如果key 不存在,那么key 的值会先被初始化为0 ,然后再执行DECRBY 操作。
    #如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。
    DECRBY key decrement

    #将key 所储存的值加上增量increment 。
    #如果key 不存在,那么key 的值会先被初始化为0 ,然后再执行INCRBY 命令。
    #如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。
    INCRBY key increment

 2、list类型---存储多个字符串

key--->string
value--->list

#将一个或多个值value 插入到列表key 的表头,如果有多个value 值,那么各个value 值按从左到右的顺序依次插入到表头
LPUSH key value [value ...]
#将一个或多个值value 插入到列表key 的表尾(最右边),如果有多个value 值,那么各个value 值按从左到右的顺序依次插入到表尾
RPUSH key value [value ...]
#如果key 不存在,一个空列表会被创建并执行RPUSH,LPUSH操作

#返回列表key 中指定区间内的元素,区间以偏移量start 和stop 指定。
#下标(index) 参数start 和stop 都以0 为底,也就是说,以0 表示列表的第一个元素,以1 表示列表的
#第二个元素,以此类推。
#你也可以使用负数下标,以-1 表示列表的最后一个元素,-2 表示列表的倒数第二个元素,以此类推。
LRANGE key start stop

#移除并返回列表key 的头元素
LPOP key
#移除并返回列表key 的尾元素
RPOP key

#返回列表key 中,下标为index 的元素。
#下标(index) 参数start 和stop 都以0 为底,也就是说,以0 表示列表的第一个元素,以1 表示列表的
#第二个元素,以此类推。
#你也可以使用负数下标,以-1 表示列表的最后一个元素,-2 表示列表的倒数第二个元素,以此类推。
LINDEX key index

#返回列表key 的长度
LLEN key

#根据参数count 的值,移除列表中与参数value 相等的元素。
count 的值可以是以下几种:
• count > 0 : 从表头开始向表尾搜索,移除与value 相等的元素,数量为count 。
• count < 0 : 从表尾开始向表头搜索,移除与value 相等的元素,数量为count 的绝对值。
• count = 0 : 移除表中所有与value 相等的值。
LREM key count value

3、set 类型

key--->string
value--->set类型{"string","string",...}

将一个或多个member 元素加入到集合key 当中,已经存在于集合的member 元素将被忽略。
假如key 不存在,则创建一个只包含member 元素作成员的集合
SADD key member [member ...]

返回集合key 中的所有成员。
不存在的key 被视为空集合。
SMEMBERS key

返回一个集合的全部成员,该集合是所有给定集合之间的差集。
SDIFF key [key ...]

返回一个集合的全部成员,该集合是所有给定集合的交集。
不存在的key 被视为空集。
当给定集合当中有一个空集时,结果也为空集(根据集合运算定律)。
SINTER key [key ...]

返回一个集合的全部成员,该集合是所有给定集合的并集。
不存在的key 被视为空集。
SUNION key [key ...]

移除集合key 中的一个或多个member 元素,不存在的member 元素会被忽略。
SREM key member [member ...]
移除并返回集合中的一个随机元素。
SPOP key

4、sortedset排序集合

key--->string
value--->sorted ([score,member],[score,member].....)

将一个或多个member 元素及其score 值加入到有序集key 当中。
如果某个member 已经是有序集的成员,那么更新这个member 的score 值,并通过重新插入这个member
元素,来保证该member 在正确的位置上。
score 值可以是整数值或双精度浮点数。
如果key 不存在,则创建一个空的有序集并执行ZADD 操作。
ZADD key score member [[score member] [score member] ...]

返回有序集key 中,指定区间内的成员。
其中成员的位置按score 值递增(从小到大) 来排序。
具有相同score 值的成员按字典序(lexicographical order ) 来排列。
start,end和之前一样
ZRANGE key start stop [WITHSCORES]
降序排列
ZREVRANGE key start stop [WITHSCORES]

返回有序集key 中,score 值在min 和max 之间(默认包括score 值等于min 或max ) 的成员的数量。
ZCOUNT key min max

返回有序集key 中成员member 的排名。其中有序集成员按score 值递增(从小到大) 顺序排列。
排名以0 为底,也就是说,score 值最小的成员排名为0 。
ZRANK key member
逆序排列
ZREVRANK key member

移除有序集key 中的一个或多个成员,不存在的成员将被忽略。
ZREM key member [member ...]

ZSCORE key member
返回有序集key 中,成员member 的score 值。


5、哈希hash

 

key--->string
value--->hash([key:value],[key,value]....)

HSET key field value
将哈希表key 中的域field 的值设为value 。
如果key 不存在,一个新的哈希表被创建并进行HSET 操作。
如果域field 已经存在于哈希表中,旧值将被覆盖。

HMSET key field value [field value ...]
同时将多个field-value (域-值) 对设置到哈希表key 中。
此命令会覆盖哈希表中已存在的域。
如果key 不存在,一个空哈希表被创建并执行HMSET 操作。

HGET key field
返回哈希表key 中给定域field 的值。

HMGET key field [field ...]
返回哈希表key 中,一个或多个给定域的值。
如果给定的域不存在于哈希表,那么返回一个nil 值。

HDEL key field [field ...]
删除哈希表key 中的一个或多个指定域,不存在的域将被忽略。

HEXISTS key field
查看哈希表key 中,给定域field 是否存在。

HGETALL key
返回哈希表key 中,所有的域和值。
在返回值里,紧跟每个域名(field name) 之后是域的值(value),所以返回值的长度是哈希表大小的两倍。

HINCRBY key field increment
为哈希表key 中的域field 的值加上增量increment 。
增量也可以为负数,相当于对给定域进行减法操作。
如果key 不存在,一个新的哈希表被创建并执行HINCRBY 命令。
如果域field 不存在,那么在执行命令前,域的值被初始化为0 。
对一个储存字符串值的域field 执行HINCRBY 命令将造成一个错误。

HLEN key
返回哈希表key 中域的数量

HVALS key
返回哈希表key 中所有域的值。

6、Key值相关

DEL key [key ...]
删除给定的一个或多个key 。
不存在的key 会被忽略。

KEYS pattern
查找所有符合给定模式pattern 的key 。
KEYS * 匹配数据库中所有key 。
KEYS h?llo 匹配hello ,hallo 和hxllo 等。
KEYS h*llo 匹配hllo 和heeeeello 等。
KEYS h[ae]llo 匹配hello 和hallo ,但不匹配hillo 。
特殊符号用\ 隔开

EXISTS key
检查给定key 是否存在。

EXPIRE key seconds
为给定key 设置生存时间,当key 过期时(生存时间为0 ),它会被自动删除。

TTL key
以秒为单位,返回给定key 的剩余生存时间(TTL, time to live)。
    当key 不存在时,返回-2 。
    当key 存在但没有设置剩余生存时间时,返回-1 。
    否则,以秒为单位,返回key 的剩余生存时间。

PERSIST key
移除给定key 的生存时间,将这个key 从『易失的』(带生存时间key ) 转换成『持久的』(一个不带生存时
间、永不过期的key )。

TYPE key
返回key 所储存的值的类型。

7、redis配置文件

配置文件是针对服务器的

1、位置

源码安装位置 redis.conf:启动时指定conf

# redis服务器绑定谁之后, 谁就能访问redis服务器
# 任何客户端都能访问服务器, 需要注释该选项
bind 127.0.0.1 192.168.1.100
# 保护模式, 如果要远程客户端访问服务器, 该模式要关闭
protected-mode yes
# reids服务器启动时候绑定的端口, 默认为6379
port 6379
# 超时时长, 0位关闭该选项, >0则开启
timeout 0
# 服务器启动之后不是守护进程
daemonize no
# 如果服务器是守护进程, 就会生成一个pid文件
# ./ -> reids服务器启动时候对应的目录
pidfile ./redis.pid
# 日志级别
loglevel notice
# 如果服务器是守护进程, 才会写日志文件
logfile "" -> 这是没写
logfile ./redis.log
# redis中数据库的个数
databases 16
- 切换 select dbID [dbID == 0 ~ 16-1]

8、redis持久化

持久化:数据从内存到磁盘的过程

持久化的两种方式:
rdb方式
        这是一种默认的持久化方式, 默认打开
        磁盘的持久化文件xxx.rdb
        将内存数据以二进制的方式直接写入磁盘文件
        文件比较小, 恢复时间短, 效率高
        以用户设定的频率 -> 容易丢失数据
        数据完整性相对较低
aof方式
        默认是关闭的
        磁盘的持久化文件xxx.aof
        直接将生成数据的命令写入磁盘文件
        文件比较大, 恢复时间长, 效率低
        以某种频率 -> 1sec
        数据完整性高

# rdb的同步频率, 任意一个满足都可以
save 900 1
save 300 10
save 60 10000
# rdb文件的名字
dbfilename dump.rdb
# 生成的持久化文件保存的那个目录下, rdb和aof
dir ./
# 是不是要打开aof模式
appendonly no
-> 打开: yes
# 设置aof文件的名字
appendfilename "appendonly.aof"
# aof更新的频率
# appendfsync always
appendfsync everysec
# appendfsync no

1、aof和rdb能同时打开

2、aof和rdb能同时关闭:关闭rdb: save  ""//不设置就关了

3、两种模式同时开启, 如果要进行数据恢复, 如何选择?
        效率上考虑: rdb模式
        数据的完整性: aof模式

 接口文档:去官方网址下载:编译安装

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值