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 ...
随机推荐
- java map遍历并删除特定值
删除map中包含password和username的键值对 若是在map中直接删除,会指针错误 Iterator<Map.Entry<String,Object>> it = ...
- 那些代表性的HTTP状态码,你还只知道404吗?快来看看吧【转】
前言 在网络上发送请求后,经常会根据请求的状态码去判断请求的成功失败与否,常见的状态码有200,404,500. 不过你以为HTTP请求的状态码就只有这么几个么?其实是远远比这个多的. 今天这篇文章我 ...
- 学习网站总结->
慕课大巴网:这是一个学习各类技术视频的网站 慕课大巴网点我-> 吾爱破解: 这是一个破解各类软件的网站 吾爱破解点我-> 鸠摩搜书:可以搜一些免费的书,我喜欢的都能搜到 鸠摩搜书点我-&g ...
- Android图片异步加载
原:http://www.cnblogs.com/angeldevil/archive/2012/09/16/2687174.html 相关:https://github.com/nostra13/A ...
- Python开发环境(1):Eclipse+PyDev插件
电脑:小米笔记本电脑Pro 15.6寸(i5-8250U),操作系统:Windows 10,JDK版本:1.8.0_152(环境变量已配置) Step 1.下载Eclipse 根据我的CPU型号,选择 ...
- Python [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed 解决方法
一个搭建在SAE上的Django应用,使用新浪微博提供的Python SDK已经稳定运行一年有余,但最近开始持续出现微博认证失败的状况. 摘录微博python SDK的错误提示如下所示: ERROR: ...
- java基础42 File类的构造函数及其方法
本文知识点(目录): 1.IO流(Input Output) 2.IO流技术的运用场景 3.File类的构造函数(方法) 4.File类的一些常用方法 5.实例(解析File类 ...
- Android Studio配置opencv
安装过程参考:http://www.cnblogs.com/tail/p/4618476.html demo参考:http://blog.csdn.net/gao_chun/article/detai ...
- AdvStringGrid 滚动条问题
1.默认水平方向 滚动条是 小的 滚动的时候 数据会随着滚动 而 滚动的. 2.默认垂直方向 滚动条是 小的 滚动的时候 数据不会随着滚动 而滚动的.ScrollSynch := True; 垂直方向 ...
- Ubuntu 登陆循环启动 无法进入桌面 libGL error: failed to load driver: swrast
导致无法进入Ubuntu图形界面的原因很多,关键是要找到问题原因所在. 最佳的方法是查看.xsession-errors这个日志文件,依据问题解决~ 这里先汇总一下问题: 1 环境变量导致的,进入tt ...