写在前面的话:读书破万卷,编码如有神
--------------------------------------------------------------------
主要内容包括:
  • redis单进程
  • redis多数据库
  • redis的key的操作
  • redis的value五种类型
--------------------------------------------------------------------

1、redis单进程

  Redis的服务器程序采用的是单进程的模型来处理客户端的请求。对读写等事件的响应是通过对epoll函数的包装来做到的。

  Redis的实际处理速度完全依赖主进程的执行效率,假如同时有多个客户端并发访问服务器,则服务器处理能力在一定情况下将会下降。假如要提升服务器的并发能力,那么可以采用在单台机器上部署多个redis进程的方式。

--------------------------------------------------------------------

2、redis多数据库

(1)Redis每个数据库对外都是0开始递增的数字来命名,默认16个数据库,默认使用0号数据库,可以使用 select+数字 来选择数据库

 在目录/usr/local/bin下执行命令: ./redis-cli 连接到当前的redis,然后就可以用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的基础知识的更多相关文章

  1. 新手初学Redis之基础知识命令

    笔者最初接触Redis是因为了解了一些nosql方面的知识,觉得nosql是一个很有意思的方面.像其中的mongodb,redis等等.当初也没有深入的去了解Redis,直到自己前段时间在写一个web ...

  2. 分布式数据库对比评测(Es,mongodb,redis)基础知识篇

    前言 我建议大家看下这个,否则后面你不知道我在说什么. 1.ES数据库相关概念 啥是Es,说白了就是支持文档搜索的分布式数据库,专门方便搜索的,GITHUB京东现在都在用. 1.ES的数据库存放在哪里 ...

  3. Redis:基础知识及其常用数据类型和关键字

    Redis: Redis是什么: REmote DIctionary Server(远程字典服务器) 是完全开源免费的,用C语言编写的,遵守BSD协议,是一个高性能的(Key-Value)分布式内存数 ...

  4. redis的基础知识

    select切换数据库 remoteSelf:0>select 0 "OK" dbsize查看当前数据库的key数量 remoteSelf:0>dbsize " ...

  5. redis基础知识思维导图

    看到一张redis的基础知识思维导图,比较清晰, 但是没有标明来源,希望知道的给个地址,我也好说明来源 图大小有1M多.在博客上看比较模糊,可以先下载下来查看,或者在浏览器新标签中打开图片查看,就比较 ...

  6. Redis学习---基础学习[all]

    什么是NoSQL型数据库 NoSQL数据库---NoSQL数据库的分类 Redis学习---NoSQL和SQL的区别及使用场景 Redis学习---负载均衡的原理.分类.实现架构,以及使用场景 什么是 ...

  7. Redis基础知识补充及持久化、备份介绍(二)--技术流ken

    Redis知识补充 在上一篇博客<Redis基础认识及常用命令使用(一)--技术流ken>中已经介绍了redis的一些基础知识,以及常用命令的使用,本篇博客将补充一些基础知识以及redis ...

  8. RabbitMQ,Apache的ActiveMQ,阿里RocketMQ,Kafka,ZeroMQ,MetaMQ,Redis也可实现消息队列,RabbitMQ的应用场景以及基本原理介绍,RabbitMQ基础知识详解,RabbitMQ布曙

    消息队列及常见消息队列介绍 2017-10-10 09:35操作系统/客户端/人脸识别 一.消息队列(MQ)概述 消息队列(Message Queue),是分布式系统中重要的组件,其通用的使用场景可以 ...

  9. 使用Code First建模自引用关系笔记 asp.net core上使用redis探索(1) asp.net mvc控制器激活全分析 语言入门必学的基础知识你还记得么? 反射

    使用Code First建模自引用关系笔记   原文链接 一.Has方法: A.HasRequired(a => a.B); HasOptional:前者包含后者一个实例或者为null HasR ...

随机推荐

  1. PCI学习之总线原理01

    -----------以下资料由网络资料整理而成-------- PCI即Peripheral Component Interconnect,中文的意思是“外围器件互联”. PCI总线支持32位和64 ...

  2. OpenJ_POJ 1058 Guideposts

    Problem OpenJ_POJ Solution 如果我们用 \(G\) 来表示邻接矩阵,那么答案其实就是求\(\sum_{k|i}^n \binom n i G^i\) 为了消除整除的限制,我们 ...

  3. avalonJS-源码阅读(三) VMODEL

    avalon的重头戏.终于要到我最期待的vmodel了. ps:这篇博文想做的全一点,错误少一点,所以会有后续的更新在这篇文章中. 状态:一稿 目录[-] avalon dom小结 数据结构 观察者模 ...

  4. Python-Web框架的本质

    Web框架的本质 我们可以这样理解:所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端. 这样我们就可以自己实现Web框架了. Python中使用socket和 ...

  5. html-示例代码

    <!DOCTYPE html> <html lang="en" xmlns="http://www.w3.org/1999/html" xml ...

  6. android设备休眠

    从上面的连接里面找到了一些资料: 如果一开始就对Android手机的硬件架构有一定的了解,设计出的应用程序通常不会成为待机电池杀手,而要设计出正确的通信机制与通信协议也并不困难.但如果不去了解而盲目设 ...

  7. 云计算IaaS浅谈

    (本篇文章仅仅是整理文档资料时,发现的一篇课程报告,感觉还挺有参考意义的) 最近几年云计算一直是IT业的热点,一股炽热的云计算浪潮席卷了世界,全世界都在讲云计算,都在搞云计算.虽然最初是由谷歌公司提出 ...

  8. qlserver排序规则在全角与半角处理中的应用

    --1.查询区分全角与半角字符--测试数据DECLARE @t TABLE(col varchar(10))INSERT @t SELECT 'aa'UNION ALL SELECT 'Aa'UNIO ...

  9. vue组件中的轮播实现

    一.直接上代码 <template> <el-row class="Slide"> <el-row class="title"&g ...

  10. 20165203 第6周《Java程序设计》学习

    教材学习内容总结 第八章 String类 分清常量池和变量池. String类的常用方法 public int length() public boolean eauals(String s) pub ...