redis基础学习

redis是一个键值对类型的NoSql类型的数据库。

NoSql(Non-relational SQL的缩写,也有人看作是not only sql的缩写)型数据库,具有以下特征:

 1、非结构化:几乎没有约束,约束很少,这要看是什么数据库,没有对字段的像primary key、not null等等的约束。

 2、无关联的:没有表与表之间的外键关系,采用json格式存储,数据库本身不会维护表与表之间表与表之间的关系,需要程序员自己来完成。

 3、非sql:不同数据库操作数据采用的不同的语法格式,不像sql型数据库公用一套操纵数据库的语法。

 4、不满足ACID(原子性,持久性,隔离性,一致性)

 5、数据存储在内存中(sql的存储在磁盘中)

 6、数据不安全,性能高。

NoSql类型数据有4种:1、键值对类型,代表:redis;2、文档类型,代表:MongoDB;3、列类型,代表:HBase;4、Graph类型,代表:Neo4j

下面让我们来简单了解一下redis

redis,全称:Remote Dictionary Server,远程词典服务器,是一个基于内存的键值型数据库。

 特征:

 键值型:key一般是String类型,value支持多种不同数据结构,比如String,hash,set,list等等。

 单线程:每个命令具备原子性(redis6.0后的版本所具备的多线程说的是对网络请求可以有多个线程)。

 低延迟,速度快:基于内存、IO多路复用、良好的编码。只要是因为存储在内存中。

 支持数据持久化

 支持主从集群、分片集群

 支持多语言客户端

redis的下载需要在Lunix系统中下载。我的电脑为macOS

下载完后,我们可以通过修改redis.conf配置文件来修改一下配置。该配置文件的目录为usr/local/etc/   然后打开其中的redis.conf文件。下面是几个基础配置

 bind 0.0.0.0 配置 ,用于配置访问redis的IP地址,默认是127.0.0.1  。配置0.0.0.0就是所以IP都可以访问,如果redis中存储了重要信息,就不要设置成0.0.0.0 

 port 6379,配置redis的端口号,默认是6379

 daemonize yes  ,配置的redis的守护进程,配置为yes就可后台运行

 logfile "redis.log"  ,配置redis运行日志的存储位置,字符串中的就是日志文件的路径,默认为空,即不存储日志。如果像我这样不写路径,只写个文件名,就是默认在运行redis的当前目录创建该日志文件进行存储。

 databases 16 ,配置redis中数据库的数量,redis中数据库的数量是指定的(当然,可以随时在配置文件中修改),不像mysql数据库,可以直接创建任意数量的database。默认为16,编号为0~15。

 requirepass xxxxx ,配置登陆redis的密码

启动redis命令 redis-server  ,默认IP为127.0.0.1,端口号为6379;也可以指定IP和端口号    redis-server -h IP地址 -p 端口号 -a 密码。

也可以基于配置文件进行启动,前面说过redis.conf配置文件在usr/local/etc目录中,首先进入该目录,在该目录运行该命令:redis-server redis.conf

要能实现数据库的CRUD(增删改查),需要用到redis的客户端,包括:命令行客户端;图形化桌面客户端;编程客户端。

 命令行客户端:redis安装完成后自带命令后客户端 redis-cli 。

使用方式: redis-cli [options] [commands]    常见的options有 -h 127.0.0.1 指定redis连接的IP地址, -p 6379 指定redis连接的端口号, -a xxxx.. 指定redis连接的密码。

其中commands就像redis的操作命令,不指定command就进入redis-cli的交互控制台

下面来演示一下: 

   我们可以 redis-cli 命令直接进入交互控制台,但此时客户端的权限大多被限制,需要我们用密码登陆一下,密码登陆命令 AUTH 你的密码

redis数据结构:key一般是string类型,value类型多种多样,支持:string,hash,list,set,sortedSet(这5个为基本类型),GEO,BiteMap,HyperLog(后三个为特殊类型)

下面介绍一下redis的基础常用命令(所以数据类型都可以用):

 key pattren 返回key包括pattern的所有key(模糊查询)。

 keys * 查询所有key。   key a* 查询key以a开头的key。不建议在生产环境上使用,因为当存储数据很多时,redis单线程运行,很容易堵塞。

 del keys(可以只删一个,也可以删多个) 返回成功删除的key的数量。

 MSET a1 b1 a2 b2 a3 b3  添加多个键值对,键值对为(a1,b1),(a2,b2),(a3,b3)。

 exists key 判断该key shift存在

 expire key seconds 给该key设置一个有效期,到期时该key自动删除。

 TTL key 查看该key的有效期。-1 为永久有效;-2 为已失效。

value类型介绍:

 string类型:是redis中最简单的存储类型,根据字段串格式不同又分为三类:string普通字符串,int整型 可自增自减,float浮点类型 可自增自减。不过底层都是字节数组形式存储。字符串类型最大存储空间不超过512m

 命令:set key value 添加一个新键值对或修改一个已有键值对

            get key 根据key获取value

           MGET key1 key2 key3 ... 根据多个key获取多个value值。

      incr key :让该key的value值自增1

        incrby key  数字   :让一个整型key的value值自增指定步长(前面中的数字)

     incrbyfloat  key  数字: 让一个浮点类型key的value值自增指定步长(前面中的数字)

   setnx key value 添加一个string 类型键值对,前提是该key不存在,否则不执行

   setex key seconds value 添加一个string键值对,并指定有效期

  redis的key运行有目录关系形成层次结构,多个目录之间用:隔开。

hash类型:也叫散列,其value是一个无序字典,类似于hashMap,在存储对象时,string结构时将对象序列化为json字符串存储,很不方便修改其中的某个字段。  hash结构可以将对象中的每个字段独立存储,可以针对单个字段做crud

常用命令:

list类型:

  redis中的list类型与JAVA的linkedlist类似,可以看做一个双向列表。即可以支持正向检索也可以支持反检索。 特征:有序、元素可重复、插入和删除快、查询速度一般

set类型:

  redis的set结构与JAVA中的hashSet类似,可以看作一个value为Null的hashMap。特征:无序,元素不可重复,查找快,支持交集、并集、差集等功能

常见命令:

sortedSet类型:

 是一个可排序的set集合,功能上与JAVA中的treeSet有些类似,但底层数据结构却差别很大。sortedSet中的每一个元素都带有score属性,可以基于score属性对元素排序,底层的实现是一个跳表(skipList)加hash表。 特征:可排序;元素不可重复;查询速度快。经常被用于实现排行榜

 常见命令:

注意:所以排名默认都是升序,如果要降序则在命令首字母Z后面添加REV即可。

我们也可以在命令行客户端用help命令查看相应的命令:

输入完 help @后 ,直接按tab键,就会自动填充数据类型,每次按tab键都会换一个数据类型

  • 18
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于学习Redis基础知识,可以按照以下思路进行学习: 1. 了解Redis的概念和特点:首先需要了解Redis是什么,它的主要特点是什么,它为什么被广泛应用于缓存、消息队列、会话管理等场景。 2. 安装和配置Redis:根据你的操作系统,安装Redis并进行相关配置。可以参考Redis官方文档或其他教程来完成这一步。 3. 学习Redis的数据结构:Redis支持多种数据结构,如字符串、哈希、列表、集合和有序集合等。了解每种数据结构的特点、用途和操作命令,并通过实际操作来加深理解。 4. 掌握Redis的常用命令:学习Redis的常用命令,如get、set、hget、hset、lpush、lrange、sadd、smembers等,了解每个命令的具体用法和参数含义。 5. 理解Redis的持久化机制:了解Redis的RDB和AOF两种持久化方式,以及它们的优缺点。学习如何进行备份和恢复数据。 6. 学习Redis的事务和Lua脚本:了解Redis事务的基本概念和使用方法,以及如何使用Lua脚本来进行复杂的操作。 7. 深入了解Redis的性能优化和高可用方案:学习如何优化Redis的性能,包括配置调优、使用合适的数据结构、合理地使用缓存等。同时了解Redis的高可用方案,如主从复制、哨兵模式和集群模式。 8. 学习Redis与其他技术的结合:了解Redis如何与其他技术进行结合,如与Python、Java等编程语言的配合使用,以及与Spring、Django等框架的整合。 以上是学习Redis基础知识的一个思路,你可以根据自己的实际情况和需求进行学习和拓展。推荐参考一些经典的Redis教程和实战案例,通过实际操作和项目实践来提升自己的技能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值