2、Redis的基础知识
- redis单进程
- redis多数据库
- redis的key的操作
- redis的value五种类型
1、redis单进程
Redis的服务器程序采用的是单进程的模型来处理客户端的请求。对读写等事件的响应是通过对epoll函数的包装来做到的。
Redis的实际处理速度完全依赖主进程的执行效率,假如同时有多个客户端并发访问服务器,则服务器处理能力在一定情况下将会下降。假如要提升服务器的并发能力,那么可以采用在单台机器上部署多个redis进程的方式。
--------------------------------------------------------------------
2、redis多数据库
(1)Redis每个数据库对外都是0开始递增的数字来命名,默认16个数据库,默认使用0号数据库,可以使用 select+数字 来选择数据库

(2)可以使用命令:Dbsize 查看当前数据库的key的数量

(3)可以使用命令:move key 目的数据库编号,在多个数据库间移动数据

(4)可以使用命令:flushdb,清除某个数据库的数据

(5)Redis不支持自定义数据库名字,默认是: 0、1、2、3、4 ... 15
(6)Redis不支持为每个数据库设置不同的访问密码
(7)多个数据库之间并不是完全独立的,可以使用命令:FlushAll,清空redis全部的数据
--------------------------------------------------------------------
3、redis的key的操作
(1)Redis的key只能是字符串类型
(2)对Redis的keys的常用操作命令
2.1、keys:获取符合规则的键名列表
格式是keys pattern, pattern支持glob风格通配符格式:
? 匹配一个字符
* 匹配任意字符
[] 匹配中括号内的任一字符,可以用 - 来表示范围
\x 匹配字符x,用于转义符号

2.2、exists:判断键值是否存在,格式是:exists key

2.3、del: 删除key,格式是:del key

2.4、type: 获取键值的数据类型,格式是:type key

2.5、rename:改名,格式是: rename oldKey newKey

2.6、renamenx: 如果不存在则改名,格式是:renamex oldKey newKey,(这里不存在是指,newKey不存在)

用java代码来示例上面的命令操作:
import redis.clients.jedis.Jedis; import java.util.Set; /**
* redis的key操作示例
*/
public class RedisKeyOperate {
public static void main(String[] args) {
Jedis jedis = new Jedis("127.0.0.1",6379); /**
* 示例1: 相当于执行 keys *
*/
Set<String> keys = jedis.keys("*");
keys.stream().forEach(System.out::println); System.out.println("======================"); /**
* 示例2: 相当于执行 keys k?
*/
Set<String> keys1 = jedis.keys("k?");
keys1.stream().forEach(System.out::println); System.out.println("======================"); /**
* 示例3: 相当于执行 exists k1
*/
Boolean existsKey = jedis.exists("k1");
System.out.println("existsKey = " + existsKey); System.out.println("======================"); /**
* 示例4: 相当于执行 del k1
*/
Long delK1 = jedis.del("k1");
System.out.println("delK1 = " + delK1); System.out.println("======================"); /**
* 示例5: 相当于执行 type k2
*/
String typeK2 = jedis.type("k2");
System.out.println("typek2 = " + typeK2); System.out.println("======================"); /**
* 示例6: 相当于执行 rename k2 k22
*/
String renameK2 = jedis.rename("k2", "k22");
System.out.println("renameK2 = " + renameK2);
System.out.println("======================"); /**
* 示例7: 相当于执行 renamenx t1 t11
*/
Long renamenxt1 = jedis.renamenx("t1", "t11");
System.out.println("renamenxt1 = "+renamenxt1);
}
}
--------------------------------------------------------------------
4、redis的value五种类型
- String:字符串,可以存在String、Integer、Float型的数据,甚至是二进制数据,一个字符串最大容量是512M
- List: 字符串List,底层实现上不是数组,而是链表,也就是说头部和尾部插入一个新元素,其时间复杂度是常数级别的;其弊端是:元素的定位比数组慢。
- Set: 字符串Set,无序不可重复,是通过HashTable实现的
- Hash: 按Hash方式来存放字符串
- ZSet: 字符串set,有序且不可重复,根据Score来排序。底层使用散列表和跳跃表来实现,所以读取中间部分的数据也很快
--------------------------------------------------------------------
2、Redis的基础知识的更多相关文章
- 新手初学Redis之基础知识命令
笔者最初接触Redis是因为了解了一些nosql方面的知识,觉得nosql是一个很有意思的方面.像其中的mongodb,redis等等.当初也没有深入的去了解Redis,直到自己前段时间在写一个web ...
- 分布式数据库对比评测(Es,mongodb,redis)基础知识篇
前言 我建议大家看下这个,否则后面你不知道我在说什么. 1.ES数据库相关概念 啥是Es,说白了就是支持文档搜索的分布式数据库,专门方便搜索的,GITHUB京东现在都在用. 1.ES的数据库存放在哪里 ...
- Redis:基础知识及其常用数据类型和关键字
Redis: Redis是什么: REmote DIctionary Server(远程字典服务器) 是完全开源免费的,用C语言编写的,遵守BSD协议,是一个高性能的(Key-Value)分布式内存数 ...
- redis的基础知识
select切换数据库 remoteSelf:0>select 0 "OK" dbsize查看当前数据库的key数量 remoteSelf:0>dbsize " ...
- redis基础知识思维导图
看到一张redis的基础知识思维导图,比较清晰, 但是没有标明来源,希望知道的给个地址,我也好说明来源 图大小有1M多.在博客上看比较模糊,可以先下载下来查看,或者在浏览器新标签中打开图片查看,就比较 ...
- Redis学习---基础学习[all]
什么是NoSQL型数据库 NoSQL数据库---NoSQL数据库的分类 Redis学习---NoSQL和SQL的区别及使用场景 Redis学习---负载均衡的原理.分类.实现架构,以及使用场景 什么是 ...
- Redis基础知识补充及持久化、备份介绍(二)--技术流ken
Redis知识补充 在上一篇博客<Redis基础认识及常用命令使用(一)--技术流ken>中已经介绍了redis的一些基础知识,以及常用命令的使用,本篇博客将补充一些基础知识以及redis ...
- RabbitMQ,Apache的ActiveMQ,阿里RocketMQ,Kafka,ZeroMQ,MetaMQ,Redis也可实现消息队列,RabbitMQ的应用场景以及基本原理介绍,RabbitMQ基础知识详解,RabbitMQ布曙
消息队列及常见消息队列介绍 2017-10-10 09:35操作系统/客户端/人脸识别 一.消息队列(MQ)概述 消息队列(Message Queue),是分布式系统中重要的组件,其通用的使用场景可以 ...
- 使用Code First建模自引用关系笔记 asp.net core上使用redis探索(1) asp.net mvc控制器激活全分析 语言入门必学的基础知识你还记得么? 反射
使用Code First建模自引用关系笔记 原文链接 一.Has方法: A.HasRequired(a => a.B); HasOptional:前者包含后者一个实例或者为null HasR ...
随机推荐
- 超简单的qps统计方法(推荐)【转】
统计最近N秒内的QPS值(包括每秒select,insert等值) mysql> select variable_name,sum(per_sec) as qps from (select st ...
- html5学习之canvas
Canvas画布 1.绘图方法 ctx.moveTo(x,y) 落笔ctx.lineTo(x,y) 连线ctx.stroke() 描边 ctx.beginPath(): 开启新的图层 演示: stro ...
- GitHub安装和使用
GitHub是一个基于git的代码托管平台,付费用户可以建私人仓库,一般的免费用户只能使用公共仓库,也就是代码要公开. Github 由Chris Wanstrath, PJ Hyett 与Tom P ...
- thinkphp框架if标签条件表达式
eq 等于neq 不等于gt 大于egt 大于等于lt 小于elt 小于等于
- springMVC源码分析--HttpMessageConverter参数read操作(二)
上一篇博客springMVC源码分析--HttpMessageConverter数据转化(一)中我们简单介绍了一下HttpMessageConverter接口提供的几个方法,主要有以下几个方法: (1 ...
- 一张图来帮你理解 SOA
SOA 曾经一度是技术领域中最难以理解的一个概念.SOA 似乎让很多人感到困惑 - 一般来讲这是由于人们认为它拥有几乎神奇的力量.事实上 SOA 只是一个很简单的概念:SOA 由诸如 C++ 和 Ja ...
- Linux学习笔记:输入输出重定向 >>命令
Linux重定向是指修改原来默认的一些东西,对原来系统命令的默认执行方式进行改变.比如说我不想看到在显示器的输出,而是希望输出到某一文件中就可以通过Linux重定向来进行这项工作. 将stdout重定 ...
- 20165333 预备作业3 Linux安装及学习
预备作业3 Linux安装及学习 Linux系统安装 在老师的教程帮助下成功的完成了虚拟机的安装,但安装过程中也遇到了一些问题.在下载ubuntu时,总是下载失败,在求助同学后,在中文版官网的网址,才 ...
- C#连接mariadb代码及方式
不负责任的说MariaDb和MySQL很多都是通用的,因为来自同一个爹... 和MySQL连接方式差不多 首先配置好你的MariaDb,创建test数据库,在test里创建MyTable表,脚本如下( ...
- Ocelot 配置初始
{ "ReRoutes": [ { /*将用户的请求 /post/1 转发到 localhost/api/post/1*/ /* DownstreamPathTemplate:转到 ...