Redis特点:

  1、速度快

  2、支持丰富的数据类型:字符串、哈希列表、集合

  3、操作具有原子性,所有Redis操作都是原子操作

  4、多实用工具,可应用如缓存,消息队列,应用程序中任何短期数据,如web中会话,网页命中计算

Redis有专用命令管理键,包括有设置过期时间,判断是否存在,转移,查找类型等

键的形式:表名:主键名:列名

应用场景

Redis作缓存系统

Redis可以对每个键设置生存时间

可以限定数据占用的最大内存空间,在数据达到空间限制后可以按照一定规则自动淘汰不需要的键。

设置方法: 修改配置文件的maxmemory参数,限制Redis最大可用内存大小(单位是字节),当超出了这个限制时Redis会依据maxmemory-policy参数指定的策略来删除不需要的键直到Redis占用的内存小于指定内存.

Redis作队列

列表类型键可以用来实现队列,并支持阻塞时读取,可以很容易地实现一个高性能的优先级队列。

Redis数据类型

1、string类型

常用命令: set,get,decr,incr,mget 等

基本操作列表:

GET 获取指定键对应的值
SET 设定键值
DEL 删除指定键对应的值(对所有数据类型都有效)
127.0.0.1:6379> set hello world
OK
127.0.0.1:6379> get hello
"world"
127.0.0.1:6379> del hello
(integer) 1
127.0.0.1:6379> del hello
(integer) 0
127.0.0.1:6379> get hello
(nil)
127.0.0.1:6379>

2、list类型

常用命令:lpush,rpush,lpop,rpop,lrange等

基本操作列表:

RPUSH 从列表的右侧压入数据
LRANGE 从列表中获取指定范围内的数据
LINDEX 根据给定的下标获取列表中的值
LPOP 从列表的左侧弹出数据并返回
127.0.0.1:6379> rpush list item1
(integer) 1
127.0.0.1:6379> rpush list item2
(integer) 2
127.0.0.1:6379> rpush list item3
(integer) 3
127.0.0.1:6379> lrange list 0 -1
1) "item1"
2) "item2"
3) "item3"
127.0.0.1:6379> lindex liat 1
(nil)
127.0.0.1:6379> lindex list 1
"item2"
127.0.0.1:6379> lindex list 0
"item1"
127.0.0.1:6379> lpop list
"item1"
127.0.0.1:6379> lrange list 0 -1
1) "item2"
2) "item3"
127.0.0.1:6379>

3、set(无序)类型

常用命令:sadd,spop,smembers,sunion 等

基本操作列表:

SADD 向集合中添加数据
SMEMBERS 返回集合中所有的数据
SISMEMBER 检测给定的值在集合中是否存在
SREM 如果给定的值存在,从集合中删除该值
127.0.0.1:6379> sadd setkey item
(integer) 1
127.0.0.1:6379> sadd setkey item1
(integer) 1
127.0.0.1:6379> sadd setkey item2
(integer) 1
127.0.0.1:6379> sadd setkey item3
(integer) 1
127.0.0.1:6379> sadd setkey item4
(integer) 1
127.0.0.1:6379> smembers setkey
1) "item1"
2) "item"
3) "item3"
4) "item2"
5) "item4"
127.0.0.1:6379> sismember setkey item4
(integer) 1
127.0.0.1:6379> sismember setkey item5
(integer) 0
127.0.0.1:6379> srem setkey item
(integer) 1
127.0.0.1:6379> sismember setkey item
(integer) 0
127.0.0.1:6379>

4、hash类型

常用命令:hget,hset,hgetall 等

基本操作列表:

HSET 基于给定的键值存储哈希值
HGET 基于给定的键值获取哈希值
HGETALL 获取所有的哈希值(包括键也会一并返回)
HDEL 如果给定的键存在,删除该键对应的哈希值
127.0.0.1:6379> hset hashkey subkey1 item1
(integer) 1
127.0.0.1:6379> hset hashkey subkey2 item2
(integer) 1
127.0.0.1:6379> hset hashkey subkey3 item3
(integer) 1
127.0.0.1:6379>
127.0.0.1:6379> hgetall hashkey
1) "subkey1"
2) "item1"
3) "subkey2"
4) "item2"
5) "subkey3"
6) "item3"
127.0.0.1:6379> hdel hashkey subkey2
(integer) 1
127.0.0.1:6379> hdel hashkey subkey2
(integer) 0
127.0.0.1:6379> hget hashkey subkey2
(nil)
127.0.0.1:6379> hget hashkey subkey1
"item1"
127.0.0.1:6379> hgetall hashkey
1) "subkey1"
2) "item1"
3) "subkey3"
4) "item3"
127.0.0.1:6379>

5、zset(有序)类型

常用命令:zadd,zrange,zrem,zcard等

基本操作列表:

ZADD 根据给定的排序(score)向有序集合添加数据
ZRANGE 从有序集合中获取排序好的数据
ZRANGEBYSCORE 基于指定范围的排序值获取数据
ZREM 如果给定的键存在,删除该键对应的数据
127.0.0.1:6379> zadd zsetkey 728 member1
(integer) 1
127.0.0.1:6379> zadd zsetkey 982 member2
(integer) 1
127.0.0.1:6379> zadd zsetkey 982 member2
(integer) 0
127.0.0.1:6379> zadd zsetkey 983 member2
(integer) 0
127.0.0.1:6379> zadd zsetkey 983 member3
(integer) 1
127.0.0.1:6379> zrange zsetkey 0 -1
1) "member1"
2) "member2"
3) "member3"
127.0.0.1:6379> zrange zsetkey 0 -1 withscores
1) "member1"
2) "728"
3) "member2"
4) "983"
5) "member3"
6) "983"
127.0.0.1:6379> zrangebyscore zsetkey 0 800 withscores
1) "member1"
2) "728"
127.0.0.1:6379> zrange zsetkey 0 800 withscores
1) "member1"
2) "728"
3) "member2"
4) "983"
5) "member3"
6) "983"
127.0.0.1:6379> zrem zsetkey member1
(integer) 1
127.0.0.1:6379> zrem zsetkey member1
(integer) 0
127.0.0.1:6379> zrange zsetkey 0 -1 withscores
1) "member2"
2) "983"
3) "member3"
4) "983"
127.0.0.1:6379>

6、HyperLogLog

可以非常省内存去统计各种计数,但无法知道统计详细内容

7、发布订阅

消息通信模式,发送者(pub)发送消息,订阅者(sub)接收消息

Redis 学习开发笔记的更多相关文章

  1. UWP学习开发笔记记录(开篇)

    零零散散开发微软移动2年多了,基本上从未记录或写过任何笔记.所以打算写一些自己的心得和技术的分享,大家一起来共同探讨.虽然现在UWP的工作几乎没有了,但是我感觉大家都是在观望,再看接下来微软的动作,所 ...

  2. RabbitMQ 学习开发笔记

    基本概念 ConnectionFactory.Connection.Channel ConnectionFactory.Connection.Channel,这三个都是RabbitMQ对外提供的API ...

  3. 微信小程序学习开发笔记

    首先注册小程序开账号,下载开发工具之后,先啃官方文档:https://developers.weixin.qq.com/miniprogram/dev/framework/ ,把小程序的基本的代码框架 ...

  4. Python 学习开发笔记之IO操作

    文件或者目录的路径操作 获取当前工作目录 import os import sys cwd = os.getcwd() 路径的拼接 os.path.join(path,"dir") ...

  5. Android 学习开发笔记《Service 与 Thread 的区别 》

    很多时候,你可能会问,为什么要用 Service,而不用 Thread 呢,因为用 Thread 是很方便的,比起 Service 也方便多了,下面我详细的来解释一下. 1). Thread:Thre ...

  6. Android 学习开发笔记《Android认识》

    1.          Android:2007年11月5日第一版,2009年5月豪华版,2010年HTC手机 2.          Android框架主要:应用程序.应用程序框架.函数库.运行时. ...

  7. Java多线程学习开发笔记

    线程有有序性和可见性 多个线程之间是不能直接传递数据交互的,它们之间的交互只能通过共享变量来实现. 在多个线程之间共享类的一个对象,这个对象是被创建在主内存(堆内存)中,每个线程都有自己的工作内存(线 ...

  8. Django学习开发--笔记一(从零开始)

    创建django项目注: 首先需在python中下载django 命令:pip install django1.任意文件中创建django项目 diango-admin startproject my ...

  9. Redis学习笔记4-Redis配置详解

    在Redis中直接启动redis-server服务时, 采用的是默认的配置文件.采用redis-server   xxx.conf 这样的方式可以按照指定的配置文件来运行Redis服务.按照本Redi ...

随机推荐

  1. 前端模块化:RequireJS(转)

    前言 前端模块化能解决什么问题? 模块的版本管理 提高可维护性 -- 通过模块化,可以让每个文件职责单一,非常有利于代码的维护 按需加载 -- 提高显示效率 更好的依赖处理 -- 传统的开发模式,如果 ...

  2. 如何高效撤销Git管理的文件在各种状态下的更改

    一.背景 企业中我们一般采用分布式版本管理工具git来进行版本管理,在团队协作的过程中,我们难免会遇到误操作,需要撤销更改的情况,那么我们怎么高效的进行撤销修改呢?对于还未提交到暂存区的代码怎么高效撤 ...

  3. 如何在MQ中实现支持任意延迟的消息?

    什么是定时消息和延迟消息? 定时消息:Producer 将消息发送到 MQ 服务端,但并不期望这条消息立马投递,而是推迟到在当前时间点之后的某一个时间投递到 Consumer 进行消费,该消息即定时消 ...

  4. php html5 文件上传 (原创)

    今天自己写了一个HTML5+FileReader+php 的文件上传,ajax异步上传也支持 git 下载:git clone https://github.com/jiechengyang/HTML ...

  5. form表单与后台请求的关系

    开发中遇到一个问题,说这个问题前先看一下代码 后台方面, get请求: post请求: 前端方面: 问题是:当我点击提交表单后,页面会跳转成这样: 经过多番测试,原因竟是form表单的提交问题,如果用 ...

  6. centos7 卸载home 扩大root空间

    =============================================== 2017/11/1_第1次修改                       ccb_warlock == ...

  7. elastaticresearch 学习过程

    1.在Windows上安装了es 2.在chrome上装了sense 3.尝试创建 es 的模板

  8. ubuntu环境下python虚拟环境的安装

    一. 虚拟环境搭建 在开发中安装模块的方法: pip install 模块名称 之前我们安装模块都是直接在物理环境下安装,这种安装方法,后面一次安装的会覆盖掉前面一次安装的.那如果一台机器上面开发多个 ...

  9. Python的伪私有属性

    什么是伪私有属性? 在Python中,没有类似 private 之类的关键字来声明私有方法或属性. Python中要声明私有属性,需要在属性前加上双下划线(但是结尾处不能有双下划线),如:self._ ...

  10. 项目实战10.1—企业级自动化运维工具应用实战-ansible

    实战环境: 公司计划在年底做一次大型市场促销活动,全面冲刺下交易额,为明年的上市做准备.公司要求各业务组对年底大促做准备,运维部要求所有业务容量进行三倍的扩容,并搭建出多套环境可以共开发和测试人员做测 ...