Redis从安装到命令操作再到pycharm连接数据库,一条龙服务!

安装Redis数据库

1、首先
我们要把Redis数据库下载下来:
在 Windows 下,Redis 可以直接到 GitHub 的发行版本里面下载,具体下载地址是 :点我下载

在这里插入图片描述2、解压到一个文件路径中路径中不要出现中文:比如:
在这里插入图片描述将路径添加到环境变量中:
在这里插入图片描述将复制粘贴的路径添加到环境变量中:
在这里插入图片描述3、首先我们打开一个cmd窗口来启动redis服务:输入redis-server.exe
如果出现下图则表示你启动成功!

在这里插入图片描述4、再新打开一个cmd来输入:redis-cli.exe -h 127.0.0.1 -p 6397
在这里插入图片描述在这里插入图片描述如果上面的操作还是不能启动数据库的话我们可以在Redis数据库的根目录下启动cmd窗口再次输入命令来启动;
在这里插入图片描述
在这里插入图片描述
5、设置开机自动启动数据库。就不要我们每次打开数据库这么没那么麻烦了了

在这里插入图片描述输入这个命令:redis-server --service-install redis.windows-service.conf --loglevel verbose

在这里插入图片描述切记一定要在redis的根目录下进行cmd打开,设置成功后如果想要让redis开机自己启动,则必须重启电脑,即便是关机也是不行的,必须重启;

3、 Redis启动 $ redis-server 查看 redis 是否启动? $ redis-cli
以上命令将打开以下终端:
redis 127.0.0.1:6379>
127.0.0.1 是本机 IP ,6379 是 redis 服务端口。现在我们输入 PING 命令。
redis 127.0.0.1:6379> ping
PONG
以上说明我们已经成功安装了redis

Redis数据库简介

1、Redis是一个开源的使用ANSL C语言编写、支持网络、可基于内存亦可持久化的日志型、Kye-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的发工作由VMware主持。从2013年5月开始,Redis的开发有Pivotal赞助。
2、Redis是NoSQL技术阵营中的一员,它通过多种键值数据
类型来适应不同的场景下的存储需求,借助一些高层级的接口使用其可以胜任,如缓存、队列系统的不同角色。
Redis特性
(1)、Redis与其他key-value缓存产品有以下三个特点:
(2)、Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用
(3)、Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
(4)、Redis支持数据的被分,即master-slave模式的数据备份
Redis优势
(1)、性能极高-Redis能读的速度是110000次/s,写的速度是81000/s。
(2)、丰富的数据类型-Redis支持二进制案例的Strings,Lists,Hashes,Sets及Ordered Sets数据类型操作。
(3)、原子-Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。
(4)、丰富的特性-Redis还支持publish/subscribe,通知,key过期等等特性
Redis应用场景
(1)、用来做缓存(ehcache/memcached)—redis的所有数据是放在内存中的(内存数据库)
(2)、可以在某些特定应用场景下替代传统数据库—比如社交类的应用
(3)、在一些大型系统中,巧妙地实现一些特定的功能:session共享、购物车
(4)、只要你有丰富的想象力,redis可以用在可以给你无限的惊喜。。。。。。

Redis中有几个数据库?

在这里插入图片描述
其实在一个 Redis 实例内部也是有多个数据库的,与 MySQL 等其他关系型数据库不同的是,Redis 内部的数据库使用数字索引来标识,而不是像 MySQL 那样一个实例中的数据库是通过数据库名称来标识。
在 Redis 中数据库默认有 16 个,数据库标识分别是 0, 1, …, 15,我们默认使用的是 0 号数据库,不同数据库之间是隔离的,可以拥有同名的键。

1、常用的命令基本操作

Redis是Key-Value内存数据库。操作是通过各种指令进行的,比如’SET’指令可以设置键值对。而’GET’指令则获取某一个键的值、不同的数据结构Redis有不同的指令,这样指令一共有几十个,下面主要介绍一些常用的指令(下面的指令中小写字符串都是参数,可以自定义)
在这里插入图片描述

命令 作用
keys* 返回键(key),返回某个数据库中的所有的键
exists 键 判断键名为是否存在 存在返回1,不存在返回0
del 键 删除一个键
expire 键 有效时间 //设置键名为list1的有效时间为多少秒后
ttl 键 查看键名的过期时间,若为-2表示已过期,-1表示永不过期
move 键 数据库编号 //将键名键转移到另外一个数据库中
select 1 表示进入到1数据库中,默认在0数据库中,Redis公有16个数据库
persist 键 移除键的过期时间
flushdb 删除所有的数据, 清除当前所在库的所有数据
flushall 清空redis库中的所有数据

在cmd中启动redis数据库操作的命令:redis-cli

1、字符串类型的操作:String(子串类型)

(1)、set–用来设置值
格式:set key value
中文格式:set 键 值

这里注意使用set设置值时,如果前面没有创建这个键的话它就会默认创建这个键,如果这个键已经存在,则使用这个命令时会把前面的键值对覆盖
比如:set animal ‘Cat’
在这里插入图片描述(2)、get命令:获取一个键的值,并且返回这个值
格式:get key
中文格式:get 键

比如:get animal
在这里插入图片描述这里可以发现为什么我们使用get来获取值的时候它只会给一个Dog,这是因为Dog是在Cat后面设置的所有Dog把Cat已经覆盖了,所有这里获取的就是Dog这个值了
(3)、setnx命令:设置一个不存在的键和值
也就是如果前面设置了name zsj这个键和值,再使用这个命令创建的时候就不会再创建name zsj这个键和值了,不会将前面的name zsj这个键和值进行覆盖。成功则返回1,否则返回0;
格式:setnx key value
中文格式:setnx 键 值

成功:返回1
在这里插入图片描述
失败返回0
在这里插入图片描述

(4)、setex命令:设置一个指定有效期的键和值(单位/秒),不设置代表永久有效,和ser键 值,相等
格式:setex key seconds value
中文格式:setex 键 有效时间 值

比如:setex heir 30 yellow
在这里插入图片描述
(5)、setrange命令:替换子字符串(替换长度有子串长度决定)从0开始计数
格式:setrange key offset value
中文格式:setrange 键 替换子串的下标位置 替换的字串

在这里插入图片描述
(6)、mset命令:批量设置键和值,成功则返回ok,否则失败

格式:mset key value [key value …]
中文格式:mset 键1 值1 键2 值2 键3 值3…….

在这里插入图片描述
(7)、msetnx命令:批量设置不存在的键和值,成功返回1,否则失败
格式:msetnx key value [key value …]
中文格式:msetnx 键1 值1 键2 值2 键3 值3…….

成功
在这里插入图片描述
失败
在这里插入图片描述
(8)、mget 命令:批量获取键和值
格式:mget key [key …]
中文格式:mget 键1 键2 键3……

在这里插入图片描述
(9)、getrange获取设置好的字符串指定范围的值
格式:getrange key start end
中文格式:getrange 键 开始位置 结束位置

在这里插入图片描述
(10)、incr命令:指定键的值做加1操作,返回加操作之后的结果。只限于值为数字

格式:incr key
中文格式:incr 键

在这里插入图片描述(11)、incrby命令:设置某个键的值加上指定的值,操作仅限于值为数字时;

格式:incrby key increment
中文格式:incrby 键 值
其中值(increment)可以是正整数或负整数
这里注意:值只能为数字才可做加或减操作

在这里插入图片描述(12)、decr命令:指定键的值做减1操作,返回减操作后的结果,操作的值仅限于数字
格式:decr key
中文格式:decr 键
在这里插入图片描述
(13)、decrby命令: 设置某个键减上指定值,操作的值仅限于数

格式:decrby key decrement
中文格式:decrby 值 设置要减的值

在这里插入图片描述
(14)、append命令:给指定的键的字符串追加value,返回新字符串值的长度
格式:append key value
中文格式:append 键 要追加的值

在这里插入图片描述
(15)、strlen返回指定键的字符串的下标长度
格式:strlen key
中文格式:strlen 键

在这里插入图片描述
Redis hash 是一个string的field和value的映射表,hash特别适合用于存储对象

2、hash类型的书写比较特殊:

(1)、hset命令:设置一个哈希表的键和值
格式:hset key field value
中文格式:hset 哈希名 键 值

在这里插入图片描述
在这里插入图片描述
(2)、hget 命令 :获取执行哈希命中的键对应值
格式:hset key field value
中文格式:hset 哈希名 键 值

在这里插入图片描述

(3)、hsetnx命令:设置一个哈希名中不存在的键和值

格式:hsetnx key field value
中文格式:hsetnx 哈希名 哈希键 值

在这里插入图片描述
(4)、hmset命令批量设置键和值:

格式:hmset key field value [field value …]
中文格式:hmset 哈希名 键1 值1 键2 值 2 键3 值3。。。

在这里插入图片描述

(5)、hmget命令:批量获取键的值

格式:hmget key field [field …]
中文格式:hmget 哈希名 键1 键2 键3

在这里插入图片描述

(6)、hexists 命令:检测某个键是否存在如果存在返回1,否则返回0

格式:hexists key field
中文格式:hexists 哈希名 键

在这里插入图片描述

(7)、hlen 获取某个哈希名中键的数量
格式:hlen key
中文格式:hlen 哈希名

在这里插入图片描述

(8)、hdel user:删除哈希中的键和值
格式:hdel key field [field …]
中文格式:hdel 哈希名 键1 键2 键3

在这里插入图片描述在这里插入图片描述
(9)、hkeys 命令:返回某个指定的哈希名中的所有键

格式:hkeys key
中文格式:hkeys 指定的哈希名

在这里插入图片描述
(10)、hvals命令:返回指定的哈希名为中所有的值
格式:hvals key
中文格式:hvals 指定的哈希名

在这里插入图片描述
(11)、hgetall命令:返回某个指定的哈希名中所有的键和值
格式:hgetall key
中文格式:hgetall 哈希名

在这里插入图片描述

3、list列表(双向链表)

Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)
list既可以作为“栈”也可以作为”队列”

(1)、lpush 命令:在某个列表的头部压入一个或者多个子串,并返回子串的长度;

格式:lpush key value [value …]
中文格式:lpush 列表名 值1 值2 值3……

在这里插入图片描述可以在list1的头部压入一个
在这里插入图片描述
(2)、lrange 命令:获取某个指定的键(列表)中的内容
0:表示字符串的开头 -1:表示字符串的结尾
0 -1:表示获取:从开头到结尾的子串

格式:lrange key start stop
中文格式:lrange 键 值1 值2 值3

在这里插入图片描述
(3)、rpush命令: 在某个键中的尾部压入一个或者多个子串
0:表示字符串的开头 -1:表示字符串的结尾
0 -1:表示获取:从开头到结尾的子串

格式:rpush key value [value …]
中文格式:rpush 键 值1 值2 值3……

单个压入
在这里插入图片描述
多个压入
在这里插入图片描述
获取键的值:
在这里插入图片描述
(4)、linsert key BEFORE|AFTER pivot value 命令: 在键,对应的特定位置的子串前或者后添加字符串

1)在某个键中指定的子串再前面添加一个子串
格式:linsert key BEFORE pivot value
中文格式:linsert 键 BEFORE 键中的某个子串 要添加的子串
在特定的子串前面插入另外一个子串

在这里插入图片描述
2)、在某个键中指定的子串再后面添加一个子串
格式:linsert key AFTER pivot value
中文格式:linsert 键 BEFORE 键中的某个子串 要添加的子串
在特定的子串后面插入另外一个子串

在这里插入图片描述
(5)、lset命令: 修改某个键指定索引位置上的值
(格式:lset key index value
中文格式:lset 键 索引 修改的值

在这里插入图片描述
(6)、lrem命令:删除某个键中出现重复的值,可删除一次或多次
1)、当参数count为正数时,从列表的前面删除
格式:lrem key count value
中文格式:lrem 键 删除的次数 删除的值

在这里插入图片描述

2)、当参数count为负数时,从列表的后面删除
lrem命令:删除后面的两个zsj值

在这里插入图片描述
3)、当count参数为0时:
lrem命令:删除所有zsj值

在这里插入图片描述

(7)、ltrim命令:可以删除指定索引范围之外的值,比如删除索引1-3之外的值
格式:ltrim key start end
中文格式:ltrim 键 开始位置 结束位置

在这里插入图片描述

(8)、如果要要清空列表的话可以把范围设置为-1到0

在这里插入图片描述(9)、lpop 命令 从列表的头部删除元素,并返回已经删除的元素
格式:lpop key
中文格式:lopo 键

在这里插入图片描述

(10)、rpop命令:从列表的尾部删除元素,并返回被删除的元素
格式:rpop key
中文格式:rpop 键

在这里插入图片描述
(11)、rpoplpush 命令:将一个列表尾部的一个元素移出到另外一个列表的头部,并返回这个移出的这个值
格式:rpoplpush source destination
中文格式:rpoplpush 要移出元素的列表名 要接收元素的列表名

在这里插入图片描述

(12)、lindex命令:返回列表中指定索引位置上的元素
格式:lindex key index
中文格式:lindex 列表名 指定的索引位置

在这里插入图片描述
(13)、llen 命令:返回指定的列表所有子串个数总和的长度
格式:llen key
中文格式:llen 列表名

在这里插入图片描述

4、Redis集合(Set)

Redis的Set是string类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据,利用集合可以对数据去重。

(1)、sadd命令:向指定的集合中添加一个或者多个元素,成功返回1,否则返回0
格式:sadd key member [member …]
中文格式:sadd 集合名 值1 值2 值3……

在这里插入图片描述
可以添加多个元素
在这里插入图片描述
(2)、smembers命令:获取指定集合中的所有元素(结果是无序的

格式:smembers key
中文格式:smembers 集合名

在这里插入图片描述
(3)、srem 命令:删除指定集合中的某个元素,成功返回1,否则返回0
格式:srem key nember
中文格式:srem 集合 要删除的元素

在这里插入图片描述

(4)、spop 命令:随机删除指定集合中的一个或者多个元素,并返回被删除的值

注意:使用pop删除元素的命令都会返回被删除的值
格式:spop key [count]
中文格式:spop 集合名 删除的个数

因为前面的已经删除的差不多了,所以在这里有重写添加了8个元素以便后面使用
在这里插入图片描述1)、删除一个时
在这里插入图片描述
2)、删除多个时
在这里插入图片描述

(5)、srandmember命令:随机获取指定集合中的一个或者多个元素,但是不删除

格式:srandmember key [count]
中文格式:srandmember 集合 要获取元素的个数

1)、获取一个元素时
在这里插入图片描述
2)、获取多个元素时
在这里插入图片描述

(6)、smove 命令:将一个集合中的元素移动到另外一个中
格式:smove source destination member
中文格式:smove 要移动元素的集合 要接收元素的集合 要移动的元素

在这里插入图片描述
(7)、scard 命令:返回指定集合中的子串的个数
格式:scard key
中文格式:scard 集合

在这里插入图片描述

(8)、sismember 命令:判断指定的某个元素是否在指定的集合中,1表示在其中,0表示不在其中
格式:sismember key member
中文格式:sismember 集合 判断的元素

在这里插入图片描述
在测试下面的集合之前,先在这里先添加四个集合的元素,方便下面使用;
myset1:sadd myset1 1 2 3 4 5 6 7 8 9
myset2:sadd myset2 3 4 5 6 7 8 9 10
myset3:sadd myset3 10 11 12 13 14 1 2 3
myset4:sadd myset4 5 6 8 9 10

(9)、sdiff 命令:返回两个集合的差集
格式:sdiff key1 key2
中文格式:sdiff 集合a 集合b

1)、以myset1为标准,获取myset2中不存在的。
在这里插入图片描述
2)、以myset2为标准,获取myset1中不存在的。
在这里插入图片描述

10)、sdiffstore命令:返回所有集合的差集,并保存到一个集合中
格式:sdiffstore destination key [key …]
中文格式:sdiffstore 要保存元素的集合 集合1 集合2 集合3 集合4

1)、以myset1为标准,获取myset2中不存在的,并保存到集合中。
在这里插入图片描述
2)、以myset2为标准,获取myset1中不存在的并保存到集合中。
在这里插入图片描述
多个集合获取差集时
在这里插入图片描述
(11)、sinter 命令:返回N个集合中的交集,也就是返回他们相同的部分,

格式:sinter sinter key [key …]
中文格式:sinter 集合1 集合2 集合3……

在这里插入图片描述(12)、sinterstore命令:返回N个集合的交集并存储到一个集合中

格式:sinterstore destination key [key …]
中文格式:sinterstore 保存元素的集合 集合1 集合2 集合3……

在这里插入图片描述(13)、sunion 命令:返回所有集合的并集

格式:sunion key [key …]
中文格式:sunion 集合1 集合2 集合3……

在这里插入图片描述

(14)、sunionstore命令:返回所有集合的并集并存储到一个集合中

格式:sunionstore destination key [key …]
中文格式:sunionstore 保存元素的集合 集合1 集合2 集合3 …

在这里插入图片描述

5、Redis有序集合Sset(sorted set)

Redis有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序
有序集合的成员是唯一的,但是分数(score)却可以重复

(1)、zadd 命令:向一个集合中添加一个或者多个元素,元素的排序按照分数来排序
格式:zadd key score member [score member …]
中文格式:zadd 集合名 分数 元素

在这里插入图片描述
(2)、zrem命令:删除集合中的某一个元素one
格式:zrem key member [member …]
中文格式:zrem 集合 元素1 元素2 元素3……

在这里插入图片描述

(3)、zincrby 命令:如果集合中指定的元素添加分数,如果元素存在则在元素分数的基础上在加上添加的分数,如果不存在则自动创建这个元素,并添加上设置的分数值
格式:zincrby key increment member
中文格式:zincrby 集合 要添加的分数值 指定添加分数的元素

在这里插入图片描述

(4)、zrank 命令:返回一个指定的元素在集合中的排名(从小到大的排序),
注意:返回有序集和key中成员member的排名,其中有序集成员按score值从大到小排列。排名以0为底,也就是说,score值最大的成员排名为0。

格式:zrank key number
中文格式:zrank 集合 指定的元素

在这里插入图片描述

(5)、zrevrank命令:返回指定的元素在集合中的排名,其中有序集成员按score值排列(从大到小的排序)
格式:zrevrank key member
中文格式:zrevrank 集合名 指定的元素

在这里插入图片描述

(6)、zrange命令:返回存储在有序集合key中的指定范围的元素。(从小到大)
注意: 返回的元素可以认为是按得分从最低到最高排列。 如果得分相同,将按照添加时的字典排序排列。

格式:zrange key start stop [WITHSCORES]
中文格式:zrange 集合 开始的位置 结束的位置 返回分数

在这里插入图片描述
(7)、zrevrange命令:返回存储在有序集合key中的指定范围的元素。(从大到小)
注意: 返回的元素可以认为是按得分从最低到最高排列。 如果得分相同,将按照添加时的字典排序排列。

格式:zrevrange
中文格式:zrevrange 集合 开始的位置 结束的位置 返回分数

在这里插入图片描述

(8)、zrangebyscore 命令:返回集合中score在给定的区间中的元素(包含开始和结束位置的元素)
格式:zrangebyscore key min max [WITHSCORES]
中文格式:zrangebyscore 集合 最小值 最大值

在这里插入图片描述

(9)、zcount 命令:返回集合中给定分数范围内元素的数量
格式: zcount key min max
中文格式:zcount 集合 最小分数 最大分数

在这里插入图片描述
(10)、zcard 命令:返回集合中元素的个数

格式:zcard key
中文格式:zcard 集合

在这里插入图片描述(11)、zscore 命令:返回集合中指定元素的分
格式:zscore key member
中文格式:zscore 集合 元素

在这里插入图片描述
(12)、zremrangebyrank 命令:删除集合中排名在给定区间的元素
注意:移除有序集合key中,指定排名(rank)区间内的所有成员。下标参数start和stop都以0为底,0处是分数最小的那个元素。这些索引也可是负数,表示位移从最高分处开始数。例如,-1是分数最高的元素,-2是分数第二高的,依次类推。

格式:zremrangebyrank key start stop
中文格式:zremrangebyrank 集合 索引开始位置 索引结束位置

在这里插入图片描述
(13)、zremrangebyscore 将集合中从小到大排序结果的score在指定范围之间的元素删除。
格式:zremrangebyscore key min max
中文格式:zremrangebyscore 集合 最小分数 最大分数

在这里插入图片描述

安装Redis可视化工具

这里是Redis可视化工具的网盘链接
链接:https://pan.baidu.com/s/1P7tZMGrQLs5fd0zJvbwJ6A
提取码:hmcc
在这里插入图片描述

在这里插入图片描述在这里插入图片描述

使用Pyrhon来访问数据库Redis

对于使用 Python 访问 Redis,我们需要先安装 redis-py 软件包,该包实现了 Python 的 Redis 驱动。通过以下命令建立工作环境,安装软件包: pip3 install redis
安装redis包,pip install redis

在这里插入图片描述

_date_ = '2020/3/6 16:07'
import redis

# 创建数据库对象
r = redis.Redis(host='127.0.0.1',port=6379,db=0,decode_responses=True)

# 插入string类型元素
string1 = r.set('name','zsj')
# print(string1)

string2 = r.get('name')
# print(string2)
list1 =r.lpush('list1',1,2,3,4,5,6)
# print(list1)

list2 = r.rpush('list2',1,2,3,4,5,6,7)
# print(list2)

list3 = r.lrange('list2',0,-1)
# print(list3)

list4 = r.lset('list2',0,'hahah')
# print(list4)

list5 = r.lrange('list2',0,-1)
print(list5)

在这里插入图片描述
一点小小的分享,希望能帮助到需要帮助的小伙伴们!
在这里插入图片描述

发布了43 篇原创文章 · 获赞 6 · 访问量 3373

猜你喜欢

转载自blog.csdn.net/zyzgzyrmzsj/article/details/104726207