Redis安装 配置服务器 启动客户端 数据操作 发布订阅 主从配置 卸载Redis
高可扩展性
分布式计算
低成本
架构的灵活性,半结构化数据
没有复杂的关系
没有标准化
有限的查询功能(到目前为止)
最终一致是不直观的程序
类型 | 部分代表 | 特点 |
---|---|---|
列存储 | Hbase 、 Cassandra 、 Hypertable | 顾名思义,是按列存储数据的。最大的特点是方便存储结构化和半结构化数据,方便做数据压缩,对针对某一列或者某几列的查询有非常大的IO优势。 |
文档存储 | MongoDB 、CouchDB | 文档存储一般用类似json的格式存储,存储的内容是文档型的。这样也就有有机会对某些字段建立索引,实现关系数据库的某些功能。 |
key-value存储 | TokyoCabinet/Tyrant、 BerkeleyDB、MemcacheDB 、 Redis | 可以通过key快速查询到其value。一般来说,存储不管value的格式,照单全收。(Redis包含了其他功能) |
图存储 | Neo4J、 FlockDB | 图形关系的最佳存储。使用传统关系数据库来解决的话性能低下,而且设计使用不方便。 |
对象存储 | db4o 、 Versant | 通过类似面向对象语言的语法操作数据库,通过对象的方式存取数据。 |
xml数据库 | BerkeleyDB、 XML、 BaseX | 高效的存储XML数据,并支持XML的内部查询语法,比如XQuery,Xpath。 |
Redis 官网:https://redis.io/
Redis 在线测试:http://try.redis.io/
Redis菜鸟教程: https://www.runoob.com/redis/redis-tutorial.html
Redis安装 配置服务器 启动客户端 数据操作 发布订阅 主从配置 卸载Redis
直接输入命令 sudo apt-get install redis-server
安装完成后,Redis服务器会自动启动。
使用ps -aux|grep redis
命令可以看到服务器系统进程默认端口6379
redis 2890 0.2 0.1 41872 6064 ? Ssl 14:17 0:07 /usr/bin/redis-server 127.0.0.1:6379
hzlarm 3222 0.0 0.0 11324 780 pts/2 S+ 15:02 0:00 grep --color=auto redis
使用netstat -nlt|grep 6379
命令可以看到redis服务器状态
tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN
使用sudo /etc/init.d/redis-server status
命令可以看到Redis服务器状态
wget http://download.redis.io/releases/redis-5.0.5.tar.gz
tar xzf redis-5.0.5.tar.gz
sudo mv redis-5.0.5 /usr/local/redis
cd /usr/local/redis/
sudo make
失败则 使用 sudo make MALLOC=libc
后再sudo make
sudo make test
这段运行时间会较长sudo make install
redis-server
按ctrl+c停止Redis安装 配置服务器 启动客户端 数据操作 发布订阅 主从配置 卸载Redis
配置文件为/etc/redis/redis.conf
(在线安装推荐)或者 /usr/local/redis/redis.conf
(手动安装)
sudo vi /etc/redis/redis.conf
Redis服务器默认是不需要密码的,假设设置密码为hzlarm。
去掉requirepass 前面的注释#,在后面添加密码
requirepass hzlarm
注释掉绑定地址#bind 127.0.0.1
port 6379
daemonize no|yes
dbfilename dump.rdb
dir /var/lib/redis
sudo /etc/init.d/redis-server restart
or
sudo service redis-server restart
or
sudo redis-server /etc/redis/redis.conf
Redis安装 配置服务器 启动客户端 数据操作 发布订阅 主从配置 卸载Redis
安装Redis服务器,会自动地一起安装Redis命令行客户端程序。命令行输入 redis-cli
如果设置了密码hzlarmredis-cli -a hzlarm
常用命令: Redis命令不区分大小写
ping
返回PONG表示畅通
help
命令行的帮助
quit
或者Ctrl+d或者Ctrl+c退出
键的命令
KEYS pattern
例如keys *
查看所有的key列表EXISTS key [key ...]
TYPE key
DEL key [key ...]
EXPIRE key seconds
TTL key
RENAME key newkey
Redis安装 配置服务器 启动客户端 数据操作 发布订阅 主从配置 卸载Redis
类型 | 简介 | 特性 | 场景 |
---|---|---|---|
String(字符串) | 二进制安全 | 可以包含任何数据,比如jpg图片或者序列化的对象,一个键最大能存储512M | — |
Hash(字典) | 键值对集合,即编程语言中的Map类型 | 适合存储对象,并且可以像数据库中update一个属性一样只修改某一项属性值(Memcached中需要取出整个字符串反序列化成对象修改完再序列化存回去) | 存储、读取、修改用户属性 |
List(列表) | 链表(双向链表) | 增删快,提供了操作某一段元素的API | 1,最新消息排行等功能(比如朋友圈的时间线) 2,消息队列 |
Set(集合) | 哈希表实现,元素不重复 | 1、添加、删除,查找的复杂度都是O(1) 2、为集合提供了求交集、并集、差集等操作 | 1、共同好友 2、利用唯一性,统计访问网站的所有独立ip 3、好友推荐时,根据tag求交集,大于某个阈值就可以推荐 |
Sorted Set(有序集合) | 将Set中的元素增加一个权重参数score,元素按score有序排列 | 数据插入集合时,已经进行天然排序 | 1、排行榜 2、带权重的消息队列 |
设置键值set key value
设置键值及过期时间,以秒为单位SETEX key seconds value
设置键值及过期时间,以毫秒为单位PSETEX key milliseconds value
设置多个键值MSET key value [key value ...]
只有在 key 不存在时设置 key 的值。SETNX key value
同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在。MSETNX key value [key value ...]
用 value 参数覆写给定 key 所储存的字符串值,从偏移量 offset 开始。SETRANGE key offset value
根据键获取值,如果不存在此键则返回nilGET key
根据多个键获取多个值MGET key1 [key2 ...]
返回 key 中字符串值的子字符GETRANGE key start end
将给定 key 的值设为 value ,并返回 key 的旧值(old value)。GETSET key value
将key对应的value加1INCR key
将key对应的value加整数INCRBY key increment
将key对应的value减1DECR key
将key对应的value减整数DECRBY key decrement
追加值APPEND key value
获取值长度STRLEN key
设置单个属性HSET key field value
设置多个属性HMSET key field1 value [field2 value ...]
只有在字段 field 不存在时,设置哈希表字段的值。HSETNX key field value
获取一个属性的值HGET key field
获取多个属性的值HMGET key field1 [field2 ...]
获取所有属性和值HGETALL key
获取所有的属性HKEYS key
返回包含属性的个数HLEN key
获取所有值HVALS key
判断属性是否存在HEXISTS key field
删除属性及值HDEL key field [field ...]
返回值的字符串长度 ERR unknown command ‘HSTRLEN’HSTRLEN key field
查看哈希表 key 中,指定的字段是否存在HEXISTS key field
为哈希表 key 中的指定字段的整数值加上增量 incrementHINCRBY key field increment
为哈希表 key 中的指定字段的浮点数值加上增量 incrementHINCRBYFLOAT key field increment
迭代哈希表中的键值对HSCAN key cursor [MATCH pattern] [COUNT count]
在头部插入一个或多个数据LPUSH key value1 [value2 ...]
将一个值插入到已存在的列表头部LPUSHX key value
在尾部插入一个或多个数据RPUSH key value1 [value2 ...]
为已存在的列表添加值RPUSHX key value
在列表的元素前或后插入新元素LINSERT key BEFORE|AFTER pivot value
通过索引设置列表元素的值LSET key index value
(索引是基于0的下标,索引可以是负数,表示偏移量是从list尾部开始计数,如-1表示列表的最后一个元素)
移出并获取列表的第一个元素LPOP key
移出并返回列表最后一个元素RPOP key
移除列表元素LREM key count value
(count > 0 : 从表头开始向表尾搜索,移除与 VALUE 相等的元素,数量为 COUNT 。count < 0 : 从表尾开始向表头搜索,移除与 VALUE 相等的元素,数量为 COUNT 的绝对值。count = 0 : 移除表中所有与 VALUE 相等的值。)
获取列表指定范围内的元素LRANGE key start stop
(start和stop偏移量都是基于0的下标,偏移量也可以是负数,表示偏移量是从list尾部开始计数,如-1表示列表的最后一个元素)
移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。BLPOP key1 [key2 ] timeout
移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。BRPOP key1 [key2 ] timeout
从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它; 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。BRPOPLPUSH source destination timeout
移除列表的最后一个元素,并将该元素添加到另一个列表并返回RPOPLPUSH source destination
对一个列表进行修剪(trim),让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除LTRIM key start stop
(start 和 stop偏移量都是基于0的下标,偏移量也可以是负数,表示偏移量是从list尾部开始计数,如-1表示列表的最后一个元素)
获取列表长度LLEN key
通过索引获取列表中的元素LINDEX key index
添加元素SADD key member [member ...]
返回key集合所有的元素SMEMBERS key
返回集合元素个数SCARD key
求多个集合的交集SINTER key [key ...]
返回给定所有集合的交集并存储在集合destination 中SINTERSTORE destination key1 [key2]
求某集合与其它集合的差集SDIFF key [key ...]
返回给定所有集合的差集并存储在 集合destination 中SDIFFSTORE destination key1 [key2]
将 member 元素从 source 集合移动到 destination 集合SMOVE source destination member
求多个集合的合集SUNION key [key ...]
判断元素是否在集合中SISMEMBER key member
移除并返回集合中的一个随机元素SPOP key
返回集合中一个或多个随机数SRANDMEMBER key [count]
移除集合中一个或多个成员SREM key member1 [member2]
所有给定集合的并集存储在 destination 集合中SUNIONSTORE destination key1 [key2]
迭代集合中的元素SSCAN key cursor [MATCH pattern] [COUNT count]
添加ZADD key score member [score member ...]
返回指定范围内的元素ZRANGE key start stop
返回元素个数ZCARD key
返回有序集key中,score值在min和max之间的成员ZCOUNT key min max
返回有序集key中,成员member的score值ZSCORE key member
…
ZINCRBY key increment member
有序集合中对指定成员的分数加上增量 increment
ZINTERSTORE destination numkeys key [key ...]
计算给定的一个或多个有序集的交集并将结果集存储在新的有序集合 key 中
ZLEXCOUNT key min max
在有序集合中计算指定字典区间内成员数量
ZRANGEBYLEX key min max [LIMIT offset count]
通过字典区间返回有序集合的成员
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT]
通过分数返回有序集合指定区间内的成员
ZRANK key member
返回有序集合中指定成员的索引
ZREM key member [member ...]
移除有序集合中的一个或多个成员
ZREMRANGEBYLEX key min max
移除有序集合中给定的字典区间的所有成员
ZREMRANGEBYRANK key start stop
移除有序集合中给定的排名区间的所有成员
ZREMRANGEBYSCORE key min max
移除有序集合中给定的分数区间的所有成员
ZREVRANGE key start stop [WITHSCORES]
返回有序集中指定区间内的成员,通过索引,分数从高到底
ZREVRANGEBYSCORE key max min [WITHSCORES]
返回有序集中指定分数区间内的成员,分数从高到低排序
ZREVRANK key member
返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序
ZUNIONSTORE destination numkeys key [key ...]
计算给定的一个或多个有序集的并集,并存储在新的 key 中
ZSCAN key cursor [MATCH pattern] [COUNT count]
迭代有序集合中的元素(包括元素成员和元素分值)
Redis安装 配置服务器 启动客户端 数据操作 发布订阅 主从配置 卸载Redis
订阅SUBSCRIBE 频道名称 [频道名称 ...]
取消订阅,如果不写参数,表示取消所有订阅UNSUBSCRIBE 频道名称 [频道名称 ...]
将信息发送到指定的频道。PUBLISH 频道 消息
Redis安装 配置服务器 启动客户端 数据操作 发布订阅 主从配置 卸载Redis
sudo vi /etc/redis/redis.conf
修改绑定ip
bind 192.168.1.10
重启redis服务器
sudo vi /etc/redis/redis.conf
注意:在slaveof后面写主机ip,再写端口,而且端口必须写
bind 192.168.1.11
slaveof 192.168.1.10 6379
重启redis服务器
启动客户端redis-cli -h修改后的ip
在master和slave分别执行info命令,查看输出信息
在master上写数据
set hello world
在slave上读数据
get hello
Redis安装 配置服务器 启动客户端 数据操作 发布订阅 主从配置 卸载Redis
sudo apt-get remove redis-server
sudo apt-get autoremove --purge redis-server
回到顶部