• Redis


    一、简介

    Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。

    Redis 与其他 key - value 缓存产品有以下三个特点:

    • Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
    • Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
    • Redis支持数据的备份,即master-slave模式的数据备份。

    二、安装

    (windows 64位):下载地址:https://github.com/MSOpenTech/redis/releases/download/win-2.8.19/redis-2.8.19.zip,直接解压即可

     linux(centos):

    • 首先安装c环境,由于redis是用c语言编写的:yum install gcc-c++;
    • 进入到根目录 cd~;
    • 下载redis:wget http://download.redis.io/releases/redis-4.0.11.tar.g;
    • 创建安装文件夹:mkdir -p /usr/local/redis;
    • 解压: tar -xzvf redis-4.0.11.tar.g ,解压的文件夹为redis的安装程序
    • 编译:进入cd redis-4.0.11   ,执行make进行编译
    • 安装: make PREFIX=/usr/local/redis install,将redis安装/usr/local/redis目录中
    • 进入到根目录,将 redis.conf 配置文件复制到 /usr/local/redis 中,cp redis.conf /usr/local/redis
    • 更改守护进程,使redis在后台启动,vim redis.config 将 daemonize no 改为 daemonize yes
    • 启动redis服务:./bin/redis-server ./redis.conf 。启动redis服务并加载redis.conf配置文件
    • 开启客户端:./bin/redis-cli

    三、文件介绍:

      redis.windows.conf redis的配置文件

    redis-benchmark.exe 测试工具,测试redis的读写性能情况

    redis-check-aof.exe aof 修复检查日志

    redis-check-dump.exe dump 检查数据库文件

    redis-cli.exe redis客户端程序

    redis-server.exe redis服务器程序

    四、类型介绍

      Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。

    五、简单实例

    1、string(最基本的类型)

    redis 127.0.0.1:6379> SET name "runoob"
    OK
    redis 127.0.0.1:6379> GET name
    "runoob"

    2、hash(哈希)

    Redis hash 是一个键值(key=>value)对集合。

    Redis hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。

    redis> HMSET myhash field1 "Hello" field2 "World"
    "OK"
    redis> HGET myhash field1
    "Hello"
    redis> HGET myhash field2
    "World"
    

      3、list(列表)

      Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边:lpush)或者尾部(右边:rpush)。

      列表最多可存储 232 - 1 元素 (4294967295, 每个列表可存储40多亿)。

    redis 127.0.0.1:6379> lpush runoob redis
    (integer) 1
    redis 127.0.0.1:6379> lpush runoob mongodb
    (integer) 2
    redis 127.0.0.1:6379> lpush runoob rabitmq
    (integer) 3
    redis 127.0.0.1:6379> lrange runoob 0 10
    1) "rabitmq"
    2) "mongodb"
    3) "redis"
    redis 127.0.0.1:6379>
    

      4、set(集合无序)

      添加一个 string 元素到 key 对应的 set 集合中,成功返回1,如果元素已经在集合中返回 0,如果 key 对应的 set 不存在则返回错误。

    redis 127.0.0.1:6379> sadd runoob redis
    (integer) 1
    redis 127.0.0.1:6379> sadd runoob mongodb
    (integer) 1
    redis 127.0.0.1:6379> sadd runoob rabitmq
    (integer) 1
    redis 127.0.0.1:6379> sadd runoob rabitmq
    (integer) 0
    redis 127.0.0.1:6379> smembers runoob
    
    1) "redis"
    2) "rabitmq"
    3) "mongodb"
    

      5、zset(集合有序)

      Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。

    不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。

    zset的成员是唯一的,但分数(score)却可以重复。

    redis 127.0.0.1:6379> zadd runoob 0 redis
    (integer) 1
    redis 127.0.0.1:6379> zadd runoob 0 mongodb
    (integer) 1
    redis 127.0.0.1:6379> zadd runoob 0 rabitmq
    (integer) 1
    redis 127.0.0.1:6379> zadd runoob 0 rabitmq
    (integer) 0
    redis 127.0.0.1:6379> > ZRANGEBYSCORE runoob 0 1000
    1) "mongodb"
    2) "rabitmq"
    3) "redis"
    

    六、常用命令

      1、连接操作命令

      • quit:关闭连接(connection)
      • auth:简单密码认证
      • help cmd: 查看cmd帮助,例如:help quit

      2、持久化

      • save:将数据同步保存到磁盘
      • bgsave:将数据异步保存到磁盘
      • lastsave:返回上次成功将数据保存到磁盘的Unix时戳
      • shundown:将数据同步保存到磁盘,然后关闭服务

      3、远程服务控制

      • info:提供服务器的信息和统计
      • monitor:实时转储收到的请求
      • slaveof:改变复制策略设置
      • config:在运行时配置Redis服务器

      4、对value的操作

      • exists(key):确认一个key是否存在
      • del(key):删除一个key
      • type(key):返回值的类型
      • keys(pattern):返回满足给定pattern的所有key,通配符*和?两种,例如:keys*name*;keys ????
      • randomkey:随机返回key空间的一个
      • keyrename(oldname, newname):重命名key
      • dbsize:返回当前数据库中key的数目
      • expire:设定一个key的活动时间(s)
      • ttl:获得一个key的活动时间
      • select(index):按索引查询
      • move(key, dbindex):移动当前数据库中的key到dbindex数据库
      • flushdb:删除当前选择数据库中的所有key
      • flushall:删除所有数据库中的所有key

      5、String

      • set(key, value):给数据库中名称为key的string赋予值value
      • get(key):返回数据库中名称为key的string的value
      • getset(key, value):给名称为key的string赋予上一次的value
      • mget(key1, key2,…, key N):返回库中多个string的value
      • setnx(key, value):添加string,名称为key,值为value
      • setex(key, time, value):向库中添加string,设定过期时间time
      • mset(key N, value N):批量设置多个string的值
      • msetnx(key N, value N):如果所有名称为key i的string都不存在
      • incr(key):名称为key的string增1操作
      • incrby(key, integer):名称为key的string增加integer
      • decr(key):名称为key的string减1操作
      • decrby(key, integer):名称为key的string减少integer
      • append(key, value):名称为key的string的值附加value
      • substr(key, start, end):返回名称为key的string的value的子串

      6、List

      • rpush(key, value):在名称为key的list尾添加一个值为value的元素
      • lpush(key, value):在名称为key的list头添加一个值为value的 元素
      • llen(key):返回名称为key的list的长度
      • lrange(key, start, end):返回名称为key的list中start至end之间的元素
      • ltrim(key, start, end):截取名称为key的list
      • lindex(key, index):返回名称为key的list中index位置的元素
      • lset(key, index, value):给名称为key的list中index位置的元素赋值
      • lrem(key, count, value):删除count个key的list中值为value的元素
      • lpop(key):返回并删除名称为key的list中的首元素
      • rpop(key):返回并删除名称为key的list中的尾元素
      • blpop(key1, key2,… key N, timeout):lpop命令的block版本。
      • brpop(key1, key2,… key N, timeout):rpop的block版本。
      • rpoplpush(srckey, dstkey):返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部

      7、Set

      • sadd(key, member):向名称为key的set中添加元素member
      • srem(key, member) :删除名称为key的set中的元素member
      • spop(key) :随机返回并删除名称为key的set中一个元素
      • smove(srckey, dstkey, member) :移到集合元素
      • scard(key) :返回名称为key的set的基数
      • sismember(key, member) :member是否是名称为key的set的元素
      • sinter(key1, key2,…key N) :求交集
      • sinterstore(dstkey, (keys)) :求交集并将交集保存到dstkey的集合
      • sunion(key1, (keys)) :求并集
      • sunionstore(dstkey, (keys)) :求并集并将并集保存到dstkey的集合
      • sdiff(key1, (keys)) :求差集
      • sdiffstore(dstkey, (keys)) :求差集并将差集保存到dstkey的集合
      • smembers(key) :返回名称为key的set的所有元素
      • srandmember(key) :随机返回名称为key的set的一个元素

      8、Hash

      • hset(key, field, value):向名称为key的hash中添加元素field
      • hget(key, field):返回名称为key的hash中field对应的value
      • hmget(key, (fields)):返回名称为key的hash中field i对应的value
      • hmset(key, (fields)):向名称为key的hash中添加元素field 
      • hincrby(key, field, integer):将名称为key的hash中field的value增加integer
      • hexists(key, field):名称为key的hash中是否存在键为field的域
      • hdel(key, field):删除名称为key的hash中键为field的域
      • hlen(key):返回名称为key的hash中元素个数
      • hkeys(key):返回名称为key的hash中所有键
      • hvals(key):返回名称为key的hash中所有键对应的value
      • hgetall(key):返回名称为key的hash中所有的键(field)及其对应的value

      9、查看服务器信息:info

    // - server : 一般 Redis 服务器信息,包含以下域:
        [redis_version] => 2.6.4      Redis 服务器版本
        [redis_git_sha1] => 0           Git SHA1
        [redis_git_dirty] => 0           Git dirty flag
        [redis_mode] => standalone
        [os] => Linux 2.6.18-348.el5 x86_64        服务器的宿主操作系统
        [arch_bits] => 64                          架构(32 或 64 位)
        [multiplexing_api] => epoll                Redis 所使用的事件处理机制
        [gcc_version] => 4.1.2                     编译 Redis 时所使用的 GCC 版本
        [process_id] => 20376                     服务器进程的 PID
        [run_id] => e5ba1056a4b81d3473daf417fa80d98ea3ca65a4      Redis 服务器的随机标识符(用于 Sentinel 和集群)
        [tcp_port] => 6379                          TCP/IP 监听端口
        [uptime_in_seconds] => 40339329                自 Redis 服务器启动以来,经过的秒数
        [uptime_in_days] => 466                     自 Redis 服务器启动以来,经过的天数
        [lru_clock] => 1440077                     以分钟为单位进行自增的时钟,用于 LRU 管理
    
    // - clients : 已连接客户端信息,包含以下域:
        [connected_clients] => 1525 已连接客户端的数量(不包括通过从属服务器连接的客户端)
        [client_longest_output_list] => 0 当前连接的客户端当中,最长的输出列表
        [client_biggest_input_buf] => 0 当前连接的客户端当中,最大输入缓存
        [blocked_clients] => 0 正在等待阻塞命令(BLPOP、BRPOP、BRPOPLPUSH)的客户端的数量
    
    // - memory : 内存信息,包含以下域:
        [used_memory] => 928376976      由 Redis 分配器分配的内存总量,以字节(byte)为单位
        [used_memory_human] => 885.37M      以人类可读的格式返回 Redis 分配的内存总量
        [used_memory_rss] => 1006768128   从操作系统的角度,返回 Redis 已分配的内存总量(俗称常驻集大小)。这个值和 top、ps 等命令的输出一致。
        [used_memory_peak] => 1038318704      Redis 的内存消耗峰值(以字节为单位)
        [used_memory_peak_human] => 990.22M       以人类可读的格式返回 Redis 的内存消耗峰值
        [used_memory_lua] => 31744           Lua 引擎所使用的内存大小(以字节为单位)
        [mem_fragmentation_ratio] => 1.08      used_memory_rss 和 used_memory 之间的比率
        [mem_allocator] => jemalloc-3.0.0      在编译时指定的, Redis 所使用的内存分配器。可以是 libc 、 jemalloc 或者 tcmalloc 。
    
    // - persistence : RDB 和 AOF 的相关信息
        [loading] => 0
        [rdb_changes_since_last_save] => 1565
        [rdb_bgsave_in_progress] => 0
        [rdb_last_save_time] => 1440464119
        [rdb_last_bgsave_status] => ok
        [rdb_last_bgsave_time_sec] => 17
        [rdb_current_bgsave_time_sec] => -1
        [aof_enabled] => 0
        [aof_rewrite_in_progress] => 0
        [aof_rewrite_scheduled] => 0
        [aof_last_rewrite_time_sec] => -1
        [aof_current_rewrite_time_sec] => -1
        [aof_last_bgrewrite_status] => ok
    
    // - stats : 一般统计信息
        [total_connections_received] => 4163025468
        [total_commands_processed] => 45340900397
        [instantaneous_ops_per_sec] => 1205
        [rejected_connections] => 0
        [expired_keys] => 494262666
        [evicted_keys] => 0
        [keyspace_hits] => 2551261422
        [keyspace_misses] => 1626960963
        [pubsub_channels] => 0
        [pubsub_patterns] => 0
        [latest_fork_usec] => 73571
    
    // - replication : 主/从复制信息
        [role] => master
        [connected_slaves] => 1
    
    // - cpu : CPU 计算量统计信息
        [slave0] => 172.16.18.205,6379,online
        [used_cpu_sys] => 785715.81
        [used_cpu_user] => 1005111.12
        [used_cpu_sys_children] => 121746.03
        [used_cpu_user_children] => 1396449.38
    
        [db0] => keys=3443200,expires=14669
        [db1] => keys=9709,expires=9686
        [db2] => keys=20955,expires=850
        [db3] => keys=68055,expires=12482
        [db4] => keys=4372,expires=4370
        [db5] => keys=12,expires=0
        [db6] => keys=295,expires=295
        [db7] => keys=5,expires=0
        [db8] => keys=167928,expires=167916
    
    

      10、java使用redis:Jedis(使用方法百度即可)

  • 相关阅读:
    squid-正向代理
    SNAT、DNAT、NPT
    tcpdump
    静态路由
    基于状态的iptables
    路由
    firewalld 防火墙
    KVM 快照
    Iptables 防火墙
    老子《道德经》第六十二章
  • 原文地址:https://www.cnblogs.com/liyingchun/p/9724053.html
Copyright © 2020-2023  润新知