Redis 与其余 key - value 缓存产品有如下三个特色:linux
- Redis支持数据的持久化,能够将内存中的数据保存在磁盘中,重启的时候能够再次加载进行使用。
- Redis不单单支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
- Redis支持数据的备份,即master-slave模式的数据备份。
redis-cli
复制代码
![]()
- 设置远程访问
![]()
![]()
##2.linux安装redis
#输入命令
make
#完毕以后在当前窗口输入新的命令
sudo make install
复制代码
#启动redis服务
./redis-server redis.conf
#查看redis服务进程 是否启动成功
ps -ef | grep redis
ps -A | grep redis
#redis客户端启动
redis-cli
#关闭redis服务
ps -A | grep redis
复制代码
#3.redis常见配置数据库
- 常见配置项
- bind 127.0.0.1 [绑定ip地址,远程访问请注释]
- port 6379 [默认访问地址 6379]
- daemonize yes [是否之后台进程<守护进程>运行]
- dbfilename dump.rdb [存储数据的文件]
- dir ./. [存储数据的文件所在路径]
- **redis的数据存储:**key=value 键值对
- **key<键>的数据类型:**字符串
- value<值的类型>:
- string字符串
- hash哈希
- list列表
- set集合
- zset有序集合
#4.redis数据操做windows
**set key value :**给一个key赋值value **setex key seconds value:**给一个key设置值value,过时时间seconds **mset key value [key value]:**设置多个键值对缓存
**get key:**根据key获取一个值 **mget key [key]:**根据多个key获取多个值bash
**incr key :**将key对应的值+1 **incrby key increment:**将key对应的值+increment **decr key:**将key对应的值-1 **decrby key increment:**将key对应的值-increment服务器
**append key value:**将value的值拼接到x后面 **strlen key:**获取key对应的值的长度网络
**keys pattern:**查找键,支持正则 **exists key:**查找键是否存在,存在返回1,不然返回0 **type key:**查看键对应的值的类型 **del key:**根据key删除键值对 **expire key seconds:**给key设置过时时间 **ttl key:**查看键的有效时间(显示结果为-2 的话表示过时,-1表示永不过时)数据结构
**hset key field value:**设置单个属性 **hmset key field value [field value]:**设置多个属性架构
**hget key field :**获取key对应的值 **hmget key field [field]:**获取多个key对应的value值 **hgetall key:**获取全部属性和值 **hkeys key:**获取全部的属性 **hlen key:**获取包含属性的个数 **hvals key:**获取全部的值 **hexists key field:**判断属性是否存在 **hdel key field [field]:**根据属性名称删除属性及值 **hstrlen key field:**返回值的字符串长度
**lpush key value [value]:**列表头部增长多个数据 **rpush key value [value]:**列表尾部增长多个数据 **linsert key before | after privot value:**在一个元素钱/后插入数据 **lset key index value:**设置指定索引的元素的值
**lpop key:**删除而且获取key对应的list第一个元素 **rpop key:**删除而且获取key对应的list最后一个元素 **lrange key start stop:**返回存在在key的list中指定范围的数据
**llen key:**获取列表的长度 **lindex key index:**获取列表中索引对应的元素 **ltrim key start stop:**获取列表中start~stop组成的新的列表
**sadd key value [value]:**添加多个数据到key集合中 **smembers key:**获取key集合中全部的数据 **sismember key value:**判断value是否在key集合中存在 **scard key:**获取key集合中元素的个数
**sinter key [key]:**获取多个集合 交集 **sdiff key [key]:**获取多个集合的差集 **sunion key [key]:**获取多个集合的并集
- sorted set,有序集合
- 元素为string类型
- 元素具备惟一性,不重复
- 每一个元素都会关联一个double类型的score,表示权重,经过权重将元素从小到大排序
- 元素的score能够相同
**zadd key score value [ score value]:**添加多个带权重的数据到key集合中 **zrange key start stop:**获取指定范围中全部的元素 **zcard key:**返回元素的个数 **zcount key min max :**返回score值在min和max之间的数据 **zscore key member:**返回集合中member元素的score值
#5.redis发布订阅
- 发布者不是计划发送消息给特定的接收者(订阅者),而是发布的消息分到不一样的频道,不须要知道什么样的订阅者订阅
- 订阅者对一个或多个频道感兴趣,只需接收感兴趣的消息,不须要知道什么样的发布者发布的
- 发布者和订阅者的解耦合能够带来更大的扩展性和更加动态的网络拓扑
- 客户端发到频道的消息,将会被推送到全部订阅此频道的客户端
- 客户端不须要主动去获取消息,只须要订阅频道,这个频道的内容就会被推送过来
推送消息的格式包含三部分
part1:消息类型,包含三种类型
- subscribe,表示订阅成功
- unsubscribe,表示取消订阅成功
- message,表示其它终端发布消息
若是第一部分的值为subscribe,则第二部分是频道,第三部分是如今订阅的频道的数量
若是第一部分的值为unsubscribe,则第二部分是频道,第三部分是如今订阅的频道的数量,若是为0则表示当前没有订阅任何频道,当在Pub/Sub之外状态,客户端能够发出任何redis命令
若是第一部分的值为message,则第二部分是来源频道的名称,第三部分是消息的内容
subscribe 频道名称 [频道名称]:订阅多个频道
unsubscribe 频道名称 [频道名称]:取消多个频道的订阅
publish 频道 消息:向指定的频道推送消息
复制代码
###打开多个命令窗口:
输入命令:
#启动redis redis-cli #选择数据库 select 0 #订阅频道 subscribe zhiji 复制代码
输入命令
#启动redis redis-cli #选择数据库 select 1 #发布消息 publish zhiji 'hellow' 复制代码
#6.主从双备
主从配置 一个master能够拥有多个slave,一个slave又能够拥有多个slave,如此下去,造成了强大的多级服务器集群架构 好比,将ip为192.168.1.10的机器做为主服务器,将ip为192.168.1.11的机器做为从服务器
设置主服务器的配置 bind 192.168.1.10 设置从服务器的配置 注意:在slaveof后面写主机ip,再写端口,并且端口必须写
经过redis.**.conf配置完成主从双备
bind配置主数据库服务器
slaveof配置从数据库服务器
bind 192.168.1.11 slaveof 192.168.1.10 6379 在master和slave分别执行info命令,查看输出信息
在master上写数据
set hello world 在slave上读数据
get hello
复制代码