Redis 学习开发笔记
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 学习开发笔记的更多相关文章
- UWP学习开发笔记记录(开篇)
零零散散开发微软移动2年多了,基本上从未记录或写过任何笔记.所以打算写一些自己的心得和技术的分享,大家一起来共同探讨.虽然现在UWP的工作几乎没有了,但是我感觉大家都是在观望,再看接下来微软的动作,所 ...
- RabbitMQ 学习开发笔记
基本概念 ConnectionFactory.Connection.Channel ConnectionFactory.Connection.Channel,这三个都是RabbitMQ对外提供的API ...
- 微信小程序学习开发笔记
首先注册小程序开账号,下载开发工具之后,先啃官方文档:https://developers.weixin.qq.com/miniprogram/dev/framework/ ,把小程序的基本的代码框架 ...
- Python 学习开发笔记之IO操作
文件或者目录的路径操作 获取当前工作目录 import os import sys cwd = os.getcwd() 路径的拼接 os.path.join(path,"dir") ...
- Android 学习开发笔记《Service 与 Thread 的区别 》
很多时候,你可能会问,为什么要用 Service,而不用 Thread 呢,因为用 Thread 是很方便的,比起 Service 也方便多了,下面我详细的来解释一下. 1). Thread:Thre ...
- Android 学习开发笔记《Android认识》
1. Android:2007年11月5日第一版,2009年5月豪华版,2010年HTC手机 2. Android框架主要:应用程序.应用程序框架.函数库.运行时. ...
- Java多线程学习开发笔记
线程有有序性和可见性 多个线程之间是不能直接传递数据交互的,它们之间的交互只能通过共享变量来实现. 在多个线程之间共享类的一个对象,这个对象是被创建在主内存(堆内存)中,每个线程都有自己的工作内存(线 ...
- Django学习开发--笔记一(从零开始)
创建django项目注: 首先需在python中下载django 命令:pip install django1.任意文件中创建django项目 diango-admin startproject my ...
- Redis学习笔记4-Redis配置详解
在Redis中直接启动redis-server服务时, 采用的是默认的配置文件.采用redis-server xxx.conf 这样的方式可以按照指定的配置文件来运行Redis服务.按照本Redi ...
随机推荐
- IDEA快速创建Maven+SpringBoot项目时:Cannot download https://start.spring.io;Status:403
先展示一下我遇到的问题: 用浏览器搜索是有页面的,但是但是但是呢,用IDEA快速构建的时候就报403 咳咳!巴格虐我万千遍,我待技术如初恋... 我看到的解决办法有以下两种,当然,我只想说:" ...
- javaWeb超链接(href)请求-特殊字符处理
写在前面: 最近在项目中,遇到一个问题,在点击一个超链接时,页面报错.通过浏览器调试就可以知道发送的请求参数是不完整的,因为参数中含有特殊字符.所以就报错啦~~ 原代码,不能正确发送含有特殊字符的参数 ...
- 在Eclipse中创建Django项目
在以前的分享中,我们是在命令行模式下创建Django项目的,那么,如何在IDE中使用Django呢? 本文将介绍如何在Eclipse中创建Django项目. 首先,新建Django项目mysite,如 ...
- MVC系列——一个异常消息传递引发的思考
前言:最近在某个项目里面遇到一个有点纠结的小问题,经过半天时间的思索和尝试,问题得到解决.在此记录一下解决的过程,以及解决问题的过程中对.net里面MVC异常处理的思考.都是些老生常谈的问题,不多说, ...
- MySQL相关命令
我们现在初步学习MySQL,下面来简单介绍一下MySQL常用命令 版权归skylinelin所有,转载请注明出处. 首先登录MySQL数据库,"\h"一下看一下帮助信息 这些就是M ...
- less基础语法
变量 //->LESS代码 @link-color: #428bca; @link-color-hover: darken(@link-color, 10%); a { color: @link ...
- Windows编程之进程遍历(C++实现)
Windows编程之进程遍历 PS: 主要扣代码使用,直接滑动到最下面使用. 遍历进程需要几个API,和一个结构体 1.创建进程快照 2.遍历首次进程 3.继续下次遍历 4.进程信息结构体 API 分 ...
- vuejs实现本地数据的筛选分页
今天项目需要一份根据本地数据的筛选分页功能,好吧,本来以为很简单,网上搜了搜全是ajax获取的数据,这不符合要求啊,修改起来太费力气,还不如我自己去写,不多说直接上代码 效果图: 项目需要:点击左侧进 ...
- SpringBoot_02_servlet容器配置
二.参考资料 1.Spring boot 自定义端口 2.Spring Boot的Web配置(九):Tomcat配置和Tomcat替换
- 一起学Linux04之Linux文件基本属性
Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限.为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定. 为了介绍文件属性,首 ...