目录
1. Redis介绍
1.1 Redis是什么
- Redis是一个高性能的,开源的,C语言开发的,键值对存储数据的nosql数据库。
- NoSQL:not only sql,泛指非关系型数据库:Redis/MongoDB/Hbase Hadoop
- 关系型数据库:MySQL、oracle、SqlServer
1.2 Redis特性
- Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用
- Redis不仅仅支持简单的key-value类型的数据,同时还提供List,set等数据类型
- Redis支持数据的备份
1.3 Redis的作用
Redis的主要作用:快速存取
1.4 Redis应用场景
点赞/秒杀/直播平台的在线好友列表/商品排行榜/单点登录
1.5 如何使用Redis
官网地址:https://redis.io/
2. Redis的下载和打开
2.1 Redis下载
Redis目前的版本是6.0.5,对于windows系统来说目前只能下载3.0.5版本,然而基础用法都是不变的,这里我们也不必太苛求版本。以下是已经下载的Redis的链接分享,从百度网盘中解压即可:
链接:https://pan.baidu.com/s/1zdYURr-mhhzCO3YGvzrICA
提取码:djh0
2.2 Redis在cmd中如何打开
首先win+R打开运行窗口,在cmd界面cd进入电脑中存放下载好的redis的路径,然后输入 redis-server.exe,显示这个界面则代表成功打开:
2.3 Redis的连接
另外打开一个cmd界面,依然cd进入redis的存放路径,然后输入redis-cli.exe,出现如下界面则表示成功连接:
在这个界面下就可以输入Redis命令了!
2.4 Redis数据库简单使用
DBSIZE 查看当前数据库的key数量
keys * 查看key的内容
FLUSHDB 清空当前数据库的key的数量
FLUSHALL 清空所有库的key(慎用)
exists key 判断key是否存在
3. Redis常用五大数据类型
3.1 redis-string
string是redis最基本的类型,一个key对应一个value
string可以包含任何数据,最大不能超过512M
1. set/get/del/append/strlen
set ---- 设置值
get ---- 获取值
mset ---- 设置多个值
mget ---- 获取多个值
append ---- 添加字段
del ---- 删除
strlen ---- 返回字符串长度
2. incr/decr/incrby/decrby
incr ---- 增加
decr ---- 减少
incrby ----- 制定增加多少
decrby ----- 制定减少多少
3. getrange/setrange
getrange ---- 获取指定区间范围内的值,类似between…and的关系
setrange ---- 代表从第几位开始替换,下脚本从零开始
从0 -1表示全部
3.2 redis-list(单值多value)
List(列表)
列表是简单的字符串列表,按照插入顺序排序,可以添加一个元素列表的头部(左边)或者尾部(右边)
它的底层实际是个链表
1. lpush/rpush/lrange
lpush/rpush/lrange ---- 从左/从右/获取指定长度
lpush list01 1 2 3 4 5 倒序排列
rpush list02 1 2 3 4 5 正序排列
lrange list01 0 -1 获取list01 中的所有值
2. lpop/rpop
lpop/rpop ---- 移除最左/最右
lpop list01 删除元素5
rpop list01 删除元素1
3. lindex,按照索引下标获得元素(从上到下)
lrange list01 0 -1
lindex list01 1
4. llen,求列表长度
llen list01
5. lrem key
删N个value
lrem list01 2 1 在list01中删除2个1
6.ltrim key
ltrim ---- 开始index结束index,截取指定范围的值后在赋值给key
ltrim list01 0 2 截取list01 从0到2的数据在赋值给list01
7. rpoplpush list1 list2 将list1中最后一个压入list2中第一位
lrange list01 0 -1
lrange list02 0 -1
rpoplpush list1 list2
8. lset key index value
lset list01 0 x 将list02中第一位换成x
9. linsert key before/after
linsert list01b before x php 在x之前加字段php
3.3 redis-Hash
hash是一个键值对集合
hash是一个string类型的field和value的映射表,hash特别适合存储对象

Set(集合)
set是string类型的无序集合
1. sadd/smembers/sismember
sadd/smembers/sismember ---- 添加/查看集合/查看是否存在
sadd set01 1 2 2 3 3 去掉重复添加
smembers set01 得到set01
sismember set01 1 如果存在返回1 不存在返回0
2.scard
scard ---- 获取集合里面的元素个数
scard set01
3.srem key value
srem ---- 删除集合中元素
srem set01 3
SMEMBERS set01 3已经被删除掉
4. srandmember key
srandmembe ---- 随机出几个数
sadd set02 1 2 3 4 5 6 7 8
srandmember set02 2
5. spop key
spop ---- 随机出栈
spop set01
6. smove key1 key2
sadd set03 x y z
smove set01 set03 2 将set01中的2 移动到set03中
7. 数学集合类
sadd set01 1 2 3 4 5
sadd set02 1 2 3 a b
差集
SDIFF set01 set02 返回 4 5 在第一个set中不在第二个set中
交集
SINTER set01 set02 返回 1 2 3
并集
SUNION set01 set02 返回set01 set02 中的值 去掉重复
3.5 redis-Zset
Zset(有序集合)
1. zadd/zrange
zadd zset01 60 v1 70 v2 80 v3 90 v4 100 v5
zrange zset01 0 -1
带分数返回 withscores
2. zrangebyscore key start end
zrangebyscore key start end----根据开始结束来取值
zrangebyscore zset01 60 70
zrangebyscore zset01 60 (90 表示不包含90
zrangebyscore zset01 60 90 limit 1 2 从第一条开始截取2条
3. zrem key
zrem key value---- 某score下对应的value值,作用是删除元素
zrem zset01 v1
4. zcard/zcount key score区间 /zrank key values
zcard 求zset01 总条数
zcount zset01 60 90 求60-90个数
zrank zset01 v2 返回1 返回对应下角标,从0开始
4. 更多命令
更多Redis命令:http://doc.redisfans.com/
5. Redis与python交互
5.1 redis的安装
在编译器或cmd中输入 pip install redis
5.2 redis在py文件中的简单示例
注意:在编译器中运行同时也需要在cmd中打开Redis(操作步骤见2.2),否则会报错
import redis
class StringRedis(object):
def __init__(self):
self.r=redis.StrictRedis(host='127.0.0.1',port=6379,decode_responses=True)
# host和port分别表示连接地址和端口号,这里设置同上即可。默认decode_responses=False是字节型字符,这里改为True表示输出为字符串类型
# self.r=redis.Redis()
# 设置值
def string_set(self,k,v):
res=self.r.set(k,v)
print(res)
#获取值
def string_get(self,k):
res=self.r.get(k)
return res
if __name__=='__main__':
s=StringRedis()
s.string_set('name','python')
print(s.string_get('name'))
print(type(s.string_get('name')))
#输出结果:
# True 出现True则代表成功连接
# python
# <class 'str'>