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 ...
随机推荐
- PCI学习之总线原理01
-----------以下资料由网络资料整理而成-------- PCI即Peripheral Component Interconnect,中文的意思是“外围器件互联”. PCI总线支持32位和64 ...
- OpenJ_POJ 1058 Guideposts
Problem OpenJ_POJ Solution 如果我们用 \(G\) 来表示邻接矩阵,那么答案其实就是求\(\sum_{k|i}^n \binom n i G^i\) 为了消除整除的限制,我们 ...
- avalonJS-源码阅读(三) VMODEL
avalon的重头戏.终于要到我最期待的vmodel了. ps:这篇博文想做的全一点,错误少一点,所以会有后续的更新在这篇文章中. 状态:一稿 目录[-] avalon dom小结 数据结构 观察者模 ...
- Python-Web框架的本质
Web框架的本质 我们可以这样理解:所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端. 这样我们就可以自己实现Web框架了. Python中使用socket和 ...
- html-示例代码
<!DOCTYPE html> <html lang="en" xmlns="http://www.w3.org/1999/html" xml ...
- android设备休眠
从上面的连接里面找到了一些资料: 如果一开始就对Android手机的硬件架构有一定的了解,设计出的应用程序通常不会成为待机电池杀手,而要设计出正确的通信机制与通信协议也并不困难.但如果不去了解而盲目设 ...
- 云计算IaaS浅谈
(本篇文章仅仅是整理文档资料时,发现的一篇课程报告,感觉还挺有参考意义的) 最近几年云计算一直是IT业的热点,一股炽热的云计算浪潮席卷了世界,全世界都在讲云计算,都在搞云计算.虽然最初是由谷歌公司提出 ...
- qlserver排序规则在全角与半角处理中的应用
--1.查询区分全角与半角字符--测试数据DECLARE @t TABLE(col varchar(10))INSERT @t SELECT 'aa'UNION ALL SELECT 'Aa'UNIO ...
- vue组件中的轮播实现
一.直接上代码 <template> <el-row class="Slide"> <el-row class="title"&g ...
- 20165203 第6周《Java程序设计》学习
教材学习内容总结 第八章 String类 分清常量池和变量池. String类的常用方法 public int length() public boolean eauals(String s) pub ...