redis是一个开源的, 内存数据结构存储, 一般用来作为数据库,缓存和消息代理.

Redis的优势

多种数据结构

  1. 字符类型String
  2. 散列类型Hash
  3. 列表类型List
  4. 集合类型Set
  5. 有序集合类型SortedSet

功能丰富

  1. 超时时间设置
  2. 可以通过列表类型来实现分布式队列
  3. pub/sub 消息模式

简单

  1. 多种操作命令

Redis应用场景

  1. 缓存
  2. 秒杀,抢购等
  3. 单点登陆, 分布式session等
  4. 网站访问排名
  5. 消息队列

安装

  1. 手工下载或通过wget http://download.redis.io/releases/redis-5.0.4.tar.gz
  2. tar xzf redis-5.0.4.tar.gz
  3. cd redis-5.0.4
  4. make

缺少make包, 则需要通过sudo apt-get install make安装

make报错/bin/sh: cc: command not found 缺少gcc包, 通过sudo apt-get install gcc

如果报错fatal error: jemalloc/jemalloc.h: No such file or directory 则使用make MALLOC=libc编译

可以使用命令 make test 测试. 报错You need tcl 8.5 or newer in order to run the Redis test 则需要安装tcl包.

安装方法如下:

wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz
sudo tar xzvf tcl8.6.1-src.tar.gz -C /usr/local/
cd /usr/local/tcl8.6.1/unix/
sudo ./configure
sudo make
sudo make install

安装完成后运行make test命令成功.

  1. 需要安装到指定目录, 则可以使用make install PREFIX=/mnt/d/redis 注意添加配置文件

启动命令

  1. 启动sh /redis-server ../conf/redis.conf

    以后台进程的方式启动需要修改redis.conf文件的daemonize=yes
  2. 客户端连接sh /redis-cli -h 192.168.1.123 -p 6379

配置文件中的bind用来绑定服务端的ip, 为了安全,默认不允许外网访问

默认保护模式protect-mode=yes

多数据支持

默认支持16个数据库, databases=16, 默认使用的是DB 0 . redis数据库不支持自定义名称, 且不能单独做授权, 各个数据库之间并非完全隔离. flushall命令可以清空redis中所有的数据.

select 3 转到索引为3的数据库

使用命令

  1. keys prifix* 查找到所有开头为prifix的键, pattern可以使用[? * [] ]匹配
  2. EXISTS key 是否存key
  3. type key 获取数据结构

字符类型

key的最大存储为512M.

  1. set key value 比较重要的setnx
  2. get key
  3. incr key 递增值 incrby key [step] 递增指定的step
  4. strlen key 获得长度
  5. mget key1 key2 key3 批量获取多个key的值
  6. set key1 value1 key2 value2 批量设置多个键值

key的设计可以参看阿里的规范, 例如业务名:表名:id

列表类型

  1. lpush key value 左边push数据,对应的是rpush
  2. lpop key 获取数据, 同时数据被移除,对应的是rpop
  3. llen key 列表长度
  4. lrange key start stop 获取片段, start=-1 表示从头,stop=-1表示到结尾
  5. lrem key count value 删除
  6. lset key index value 设置索引的值

散列类型

不支持数据类型嵌套, 比如hash中存储一个list.

  1. hset key field value 设置
  2. hget key field 获取
  3. hmset key field1 value1 field2 value2 设置多个值
  4. hmget key field1 field2
  5. hgetall key 获取全部信息, 包括key,value
  6. hexists key field 判断是否存在
  7. hincryby
  8. hsetnx
  9. hdel key field 删除一个或多个字段

集合类型

和list相比, 不能有重复元素, 且是无序的

  1. sadd key member... 设置一个或多个元素, 返回增加的数量
  2. smembers key 获取元素
  3. sdiff key1 key2 差集计算
  4. sunion key1 key2 并集计算

有序集合

  1. zadd key score member 增加元素
  2. zrange key start stop withscores 获取片段 withscores 用来获取分数

可以用来做排名统计.

redis的事务

比较鸡肋, 不建议使用, 有时候不能回滚

multi 开启事务;

set get...等操作为具体的事务操作

exec 提交事务

过期时间

expire key timeout 设置超时时间

ttl key 获得key过期时间

发布订阅

publish channel message

subscribe channel

分布式锁

可使用setnx实现.

分布式系列十: Redis安装和命令的更多相关文章

  1. Redis系列一 Redis安装

    Redis系列一    Redis安装 1.安装所使用的操作系统为Ubuntu16.04 Redis版本为3.2.9 软件一般下载存放目录为/opt,以下命令操作目录均为/opt root@ubunt ...

  2. Redis安装、命令以及设置密码遇到的问题

    一.下载Redis 如果没有 安装wget先安装wget和gcc(使用make的时候会用上) wget http://download.redis.io/releases/redis-4.0.8.ta ...

  3. 分布式系列十二: Redis高级主题

    持久化 Redis 支持持久化, 其持久化数据有两种方式. 两种可以同时使用. 如果同时使用, Reids 在重启时将使用 AOF 方式来还原数据. RDB 按照一定策略定时同步内存的数据到磁盘.文件 ...

  4. 分布式系列十五: MongoDB数据库

    MongoDB 是基于分布式文件存储的数据库. 开发语言是C++. 具有高性能,可扩展的特点. 是NoSql中最像关系数据库的. 什么是NoSql NoSQL 是 Not only SQL 的缩写. ...

  5. 分布式系列十一: Redis进阶

    分布式锁 数据库 数据库是使用唯一索引不允许重复的特性(或自定义实现如乐观锁). 但持有锁的进程如果释放锁时异常则容易导致死锁. zookeeper 使用临时节点, watcher可以获得节点被删除的 ...

  6. redis安装和命令使用

    前言: redis是一个key-value的存储系统,value支持string.list.set.zset.hash五种类型,且支持数据的本地存储   一.安装redis 前提:linux下需要安装 ...

  7. 分布式缓存技术redis学习系列(一)——redis简介以及linux上的安装

    redis简介 redis是NoSQL(No Only SQL,非关系型数据库)的一种,NoSQL是以Key-Value的形式存储数据.当前主流的分布式缓存技术有redis,memcached,ssd ...

  8. 分布式缓存技术redis系列(一)——redis简介以及linux上的安装

    redis简介 redis是NoSQL(No Only SQL,非关系型数据库)的一种,NoSQL是以Key-Value的形式存储数据.当前主流的分布式缓存技术有redis,memcached,ssd ...

  9. 分布式缓存技术redis学习系列(五)——redis实战(redis与spring整合,分布式锁实现)

    本文是redis学习系列的第五篇,点击下面链接可回看系列文章 <redis简介以及linux上的安装> <详细讲解redis数据结构(内存模型)以及常用命令> <redi ...

随机推荐

  1. python day09

    内存空间管理 1.空间引用计数,垃圾回收机制的依据 --变量的值被引用,该值的引用计数加1 --变量解除绑定,该值的引用计数减1 --如果该值的引用计数为0,就会被自动回收 2.引用计数会出现的循环问 ...

  2. mongoTemplate查询大数据过慢

    先上两段代码 代码一 Query query = new Query();queryAfter.addCriteria(Criteria.where("id").in(idList ...

  3. 你注意到 .Net Framework 和 .Net Core 中使用 Session 的区别了吗?

    起因 在测试一个例子时发现的问题,这个示例实现的功能是刷新页面也能保持表格锁定列的状态,先看下页面的完成效果: 测试中发现,几乎相同的代码: 在 FineUIMvc(Net Framework)下没有 ...

  4. Bloom Filter(布隆过滤器)如何解决缓存穿透

    本文摘抄自我的微信公众号"程序员柯南",欢迎关注!原文阅读 缓存穿透是什么? 关于缓存穿透,简单来说就是系统处理了大量不存在的数据查询.正常的使用缓存流程大致是,数据查询先进行缓存 ...

  5. React 精要面试题讲解(一) 单向数据流

    react 单向数据流概念 'react框架是怎样的数据流向?'||'react单向数据流是怎样的概念 ?' 解答这个问题之前,我们首先得知道,js框架是个怎样的概念. 框架:具备一定**编程思想** ...

  6. 关于map的初级应用

    map实际采用了红黑树的实现,在此,我们先不讨论map的底层实现结构原理,先来看看map究竟是怎么用,以及我是怎么看待map的. 先上代码: #include <map> #include ...

  7. WordPress博客搭建与问题总结

      一.WordPress博客搭建 1.安装Apache web服务器 yum install -y httpd systemctl restart httpd systemctl enable ht ...

  8. 【算法】螺旋方阵 上交OJ1021

    输入格式: 输入在一行中给出一个正整数N(<10). 输出格式: 输出N×N的螺旋方阵.每行N个数字,每个数字占3位. 输入样例: 5 1 2 3 4 5 16 17 18 19 6 15 24 ...

  9. Flutter绘制波浪

    以上动画是仿照 里面的物理动画还未仿写 代码见  https://github.com/dnoyeb/syk_flutter

  10. delphi ehLib 安装包下载及安装方法

    1.下载安装包,这里提供一个百度云盘共享链接,D7-XE8都有:https://pan.baidu.com/s/1DTlxok4RiSmDokuabnGvQw2.添加环境变量,菜单"Tool ...