Redis

来源:互联网 发布:网络方案的初步设计 编辑:程序博客网 时间:2024/05/22 03:19

Redis

Redis简介

  • 开源的高性能键值对数据库,提供多种不同的键值数据类型适应于不同的存储需求。学习网站:http://www.redis.net.cn/
  • Redis:远程字典服务器(Remote Dictionary Server)
  • 数据结构服务器,值可以为字符串(String),哈希(Hash),列表(List),集合(Set)和有序集合(Sort set)
  • key-value存储系统
  • 性能极高
  • 原子性
  • Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。
  • Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
  • Redis支持数据的备份,即master-slave模式的数据备份。

Redis能读的速度是110000次/s,写的速度是81000次/s 。
丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
原子 – Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。
丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性.


安装

在ubuntu下安装:

sudo apt-get updatesudo apt-get install redis-server

启动Redis,包括服务器和客服端

redis-serverredis-cli -h host -p port -a password

Redis配置默认在redis安装目录,文件为redis.conf。可以通过以下命令查看:

config get config_setting_name(*)

修改命令如下:

config set config_setting_name new_config_value

Redis 数据类型

  • string(字符串)
    基本类型,一个键最大存储512MB
set str aget str
  • hash(哈希)
    键值对集合,string类型的field和value的映射表,适合存储对象
hmset user:1 username zxl password luzhuhgetall user:1hget user:1 username
  • list(列表)

    list是简单的字符串列表,按照插入顺序排序,可以添加元素到头部(L)和尾部(R)

lpush zxl zxllrange zxl 0 3
  • set(集合)
    set是string的无序集合,通过哈希实现的,增删查复杂度为o(1)
sadd zxl zxlsmembers zxl
  • zset(sorted set 有序集合)
    zset和set差不多,不过zset元素不能重复并且关系到一个double的分数,能够通过分数进行排序(分数可以重复)
zadd key score memberzrangebyScore key score1 score2

Redis命令

用于在redis服务上启动服务,redis命令需要在redis客户端执行

redis=-cli -h host -p port -a password

Redis 键(Key)

管理redis键

command key_nameset zxl zxldel zxl

命令包括:
del,dump,exists,expire,expireat,pexpire,pexpire,keys,move key,persist,pttl,ttl,randomkey,rename key,renamenx key,type key

字符串(String)

字符串数据类型相关命令用于管理redis字符串

command key_name

命令包括:
set,get,getrange,getset,getbit,mget,setbit,setex,setnx,append,decr,incrbyfloat,incrby,incr,psetex

哈希(Hash)

命令包括:
hdel,hexists,hget,hgetall,hincrby,hkeys,hlen,hmget,hmset,hset,hsetnx,hvals,hscan

列表(List)

blpop,brpop,brpoppush,lindex,lindex,linsert,llen,lpop,lpush,lpushx,lrange,lrem,lset,ltrim,rpop,rpush,rpoplpush,rpushx

集合(Set)

字符串的无序集合,集合成员的唯一,通过hash实现。
sadd,scard,sdiff,sdiffstore,sinter,sinterstore,sismember,smembers,smove,spop,srandmeber,srem,sunion,sunionstore,sscan

有序集合(z:Sort set)

和集合类似,不过有序集合多一个double类型的分数,通过分数可以对有序集合进行排序,通过哈希实现。
zadd,zcard,zcount,zincrby,zinterstore,zlexcount,zrange,zrangebylex,zrangebyscore,zrank,zrem,zremrangebylex,zremrangebyrank,zremrangebyscore,zrevrange,zrevrangebyscore,zrevrank,zscore,zunionstore,zscan

发布订阅

Redis发布订阅(pub/sub)是一种消息通信模式,发送者发送消息,订阅者接收信息。

subscribe redis//订阅publish redis 消息//发布psubscribe //订阅多个pubsub channels//查看订阅和发布状态unsubscribe redispunsubcribe

Redis事务

事务可以一次执行多个命令,隔离操作,原子操作
开始事务>>命令入队>>执行事务

multiset book-name "c++"get book-namesadd tag 'C++' 'programming' 'master'smembers tagexecdiscard//取消事务exec//执行事务multi//开始标识watch//监听keyunwatch //不监听key

Redis 脚本

Redis脚本使用Lua解释器执行脚本,2.6版本已经内嵌Lua环境,执行脚本常用命令是Eval
语法如下:

eval script numkeys key […key] arg [arg…]

Redis连接

auth password//验证密码是否正确echo msg//打印字符串ping //查看服务是否运行quit,exit//关闭当前连接select index//切换数据库

Redis 服务器

用于管理Redis服务

数据备份和恢复

save:用于创建当前数据库的备份
bgsave:后台运行创建数据库备份

Redis性能测试

redis-benchmark:通过同时执行多个命令实现

redis-benchmark [option][option value]

序号 选项 描述 默认值
1 -h 指定服务器主机名 127.0.0.1
2 -p 指定服务器端口 6379
3 -s 指定服务器 socket
4 -c 指定并发连接数 50
5 -n 指定请求数 10000
6 -d 以字节的形式指定 SET/GET 值的数据大小 2
7 -k 1=keep alive 0=reconnect 1
8 -r SET/GET/INCR 使用随机 key, SADD 使用随机值
9 -P 通过管道传输 请求 1
10 -q 强制退出 redis。仅显示 query/sec 值
11 –csv 以 CSV 格式输出
12 -l 生成循环,永久执行测试
13 -t 仅运行以逗号分隔的测试命令列表。
14 -I Idle 模式。仅打开 N 个 idle 连接并等待。

0 0