Redis的安装及基本使用

1.Redis

Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。 Redis 内置了 复制(replication),LUA脚本(Lua scripting), LRU驱动事件(LRU eviction),事务(transactions) 和不同级别的 磁盘持久化(persistence), 并通过 Redis哨兵(Sentinel)和自动 分区(Cluster)提供高可用性(high availability)。Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。

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

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

2.Redis安装

1.windows安装

下载官方文件之后,安装即可。
在命令窗口输入命令

redis-cli
启动成功
  • 设置远程访问
    找到redis的配置文件

    注释bind 127.0.0.1即可实现远程连接访问

2.linux安装

  • 下载安装包解压,解压完毕在文件夹内打开命令窗口
#输入命令
make

#完毕之后在当前窗口输入新的命令
sudo make install
  • 设置redis在后台运行
把daemonize 改为yes即可实现在后台运行
  • 启动和关闭redis服务
#启动redis服务
./redis-server redis.conf 

#查看redis服务进程 是否启动成功
ps -ef | grep redis
ps -A | grep redis

#redis客户端启动
redis-cli

#关闭redis服务
ps -A | grep redis

3.redis常见配置

  • 配置文件redis.conf
  • 常见配置项
    • bind 127.0.0.1 [绑定ip地址,远程访问请注释]
    • port 6379 [默认访问地址 6379]
    • daemonize yes [是否以后台进程<守护进程>运行]
    • dbfilename dump.rdb [存储数据的文件]
    • dir ./. [存储数据的文件所在路径]
  • redis中的数据类型
  • redis的数据存储:key=value 键值对
  • key<键>的数据类型:字符串
  • value<值的类型>:
    • string字符串
    • hash哈希
    • list列表
    • set集合
    • zset有序集合

4.redis数据操作

  • string:字符串操作

set key value :给一个key赋值value
setex key seconds value:给一个key设置值value,过期时间seconds
mset key value [key value]:设置多个键值对

get key:根据key获取一个值
mget key [key]:根据多个key获取多个值

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对应的值的长度

  • key操作

keys pattern:查找键,支持正则
exists key:查找键是否存在,存在返回1,否则返回0
type key:查看键对应的值的类型
del key:根据key删除键值对
expire key seconds:给key设置过期时间
ttl key:查看键的有效时间(显示结果为-2 的话表示过期,-1表示永不过期)

  • hash:用于存储对象,对象的格式为键值对

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:返回值的字符串长度

  • list列表:有序存储多个数据

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组成的新的列表

  • set集合:无序存储多个数据

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]:获取多个集合的并集

  • zset集合:有序存储多个数据
  • 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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,752评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,100评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,244评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,099评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,210评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,307评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,346评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,133评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,546评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,849评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,019评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,702评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,331评论 3 319
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,030评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,260评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,871评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,898评论 2 351

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,644评论 18 139
  • 1 Redis介绍1.1 什么是NoSql为了解决高并发、高可扩展、高可用、大数据存储问题而产生的数据库解决方...
    克鲁德李阅读 5,275评论 0 36
  • 本文将从Redis的基本特性入手,通过讲述Redis的数据结构和主要命令对Redis的基本能力进行直观介绍。之后概...
    kelgon阅读 61,141评论 23 626
  • 分布式缓存技术PK:选择Redis还是Memcached? 经平台同意授权转载 作者:田京昆(腾讯后台研发工程师)...
    meng_philip123阅读 68,920评论 7 60
  • 如果踩到狗屎了,应该若无其事的继续行走,不久鞋底就会干净了。如果你踩到之后站在一边蹭鞋底,谁都知道你踩到什么了。
    德吉嘉措阅读 148评论 0 0