redis五大类型及基本操作

1Redis是什么?

Redis是什么?

数据库 -> 非关系型 ->开源、免费、高性能

存储介质:内存

数据库:存储数据

非关系型 对应关系型,关系型数据库:MySQL,SQLite等

特点: key->value

  • 基于内存存储的,速度更快
  • 存储的数据非结构化
  • 没有表的概念,也不存在外键之类的关系
  • 可以定时清除数据 set name zhangsan ex 10
  • 每次操作只有成功和失败两种可能
  • 单线程,同时只能执行一个任务,有效避免并发造成数据错乱

Redis 名字怎么来的?

Remote Dictionary Server (远程 字典 服务)

2安装redis

  1. 下载压缩包

    下载地址:https://github.com/tporadowski/redis/releases

    备用:https://hub.fastgit.xyz/tporadowski/redis/releases 切记:镜像站不要登录自己的github账号!!!

  2. 解压缩包

  3. 配置环境变量

  4. 注册服务并绑定使用的配置文件

    redis-server --service-install 你自己的绝对地址\redis.windows.conf   # 安装服务
    redis-server --service-uninstall  # 卸载服务
    
  5. 启动server程序

    redis-server --service-start # 启动redis服务器
    redis-server --service-stop # 停止redis服务器
    

    注意:修改配置文件之后,需要重启redis服务器

  6. 客户端连接数据库

3运行redis

打开黑窗口输入
redis-cli
然后输入密码
auth 密码

redis通用命令

ping # 检查redis是否连接成功
select 3 # 选择库,默认有16个库,如果不选择默认第一个
keys * # 查看当前库下的所有key
exists name # 检查给定 key 是否存在
type name # 查看数据类型
rename name newname # 修改 key 的名称
del name # 删除指定key
flushdb # 删除当前库所有key
flushall # 清空整个 Redis 中的数据

String类型

set key value # 设置一个key-value 映射 value可以是字符串或者数字
mset key1 value1 key2 value2 … # 同时设置多个key-value映射
set key value ex 60 # 数据有效期60秒
set key value nx # 只有当key不存在时,才会存入

get key # 查看一个key的值
mget key1 key2 key3 … # 同时获取多个key
strlen key1 # 获取key的长度
strrange key 0 4 # 获取字符串[0-4]之间的字符

set # set 命令也可以用来修改数据
setrange key 1 oooo # 修改字符串的一部分:从1的位置开始修改字符串,以oooo覆盖

string的特殊类型:数字

数字可以直接增减
incr key # 自增 1
decr key # 自减 1
incrby key 5 # 自增 5
decrby key 5 # 自减 5

del name

python写法

pip install redis #第一步打开终端安装redis库
python manage.py shell #第二部打开命令框
import redis #第三步导包
r = redis.Redis(host=“127.0.0.1”,post=6379,password=“redls密码”,db=0)
r.set(key,value,ex=60)
r.set(key,value,nx=True)
r.mset({key1,value1,key2,value2})
r.get(key)
r.mget(key1,key2)
r.strlen(key)
r.strrange(key,0,4)
r.setrange(key,1,‘oooooo’)
r.incr(key)
r.decr(key)
r.incrby(key,5)
r.decrby(key,5)

Set类型(无序列表,无序集合)

Set 是 String 类型无序的容器结构。集合成员是唯一的,不能出现重复的数据。
Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。
特点:无序的,元素不可重复的

原生写法

sadd room zhangsan lisi wangwu # 增加3个玩家到游戏中

smembers room # 查看当前所有在线的玩家
scard room # 查看当前房间里有多少玩家
sismember room zhangsan # 判断zhangsan是否已经加入游戏

srem room zhangsan lisi # 把zhangsan , lisi 从房间移除

删除

del name

Zset类型

它是 String 类型元素的有序集合,每个元素唯一且都会关联一个 double 类型的分值,根据分值来为集合中的成员从小到大排序。

原生写法

zadd guns 30 ak47 47 dp28 100 m247

zrange guns 0 -1 [withscores] # 查看guns 下面的所有枪械,按照从小到大排列
zrevrange guns 0 -1 [withscores] # 从大到小排列
zrange guns (1 3 # 查看guns (1-3]的所有枪械

zrangebyscore guns (30 100 # 查看弹容量在(30-100]之间的所有枪械
zrangebyscore guns 30 100 limit 2 1 withscores # 分页,每页1条,第三页
zrevrangebyscore guns 100 30 # 查看弹容量在(30-100]之间的所有枪械
zrevrangebyscore guns 100 30 limit 2 1 withscores # 分页,每页1条,第三页

zcard guns # 查看系统中枪的种类数
zcount guns (20 50 # 获取(20-50] 区间内的所有枪械数

zrank name dp28 # 按照从小到大,查看排名
zrevrank name dp28 # 按照从大到小

zscore guns ak47 # 查看ak47的弹容量

zincrby guns 10 m247 # 给m247枪增加10发子弹
zincrby guns -10 dp28 # 给dp28 减少10发子弹

zrem guns ak47 … # 按照字符串来移除元素,可同时多个
zremrangebyrank guns 1 2 # 按照弹容量排名 0-3 区间内的元素移除
zremrangebyscore guns 0 30 # 把弹容量小于30发的,全部删除掉

del guns

Hash类型

ak47 = {
“name”:“ak47”,
“bullet”:30,
“bullet_now”:27,
“power”:50,
“num”:1,
}
世间万物,全部转化成这种形式
Redis hash 是一个 string 类型的 field(字段) 和 value(值) 的映射表,hash 特别适合用于存储字典数据。

原生写法

hset ak47 num 1 bullet 30 now_bullet 27 power 50 # 设置一个ak47Hash字典,分别是 数量 弹容量 当前子弹 威力

hget ak47 bullet # 获取ak47的弹容量

hkeys ak47 # 获取ak47的所有属性
hvals ak47 # 获取ak47的所有值
hgetall ak47 # 获取ak47下面的所有字段和值

hdel ak47 num # 删除一个或多个字段

del guns

List类型

原生写法

lpush history maoyi liangtuo leifengmao # 从list左边依次插入,顺序要注意
rpush history bijini # 从列表右边依次插入

lrange history 0 -1 # 查看所有
lrange history 0 4 # 查看下标为[0-4]的元素

lset history 2 qiuyi # 修改指定下标的元素值
lpop history # 从左边删除一个元素
rpop history # 从右边删除一个元素
lrem history 5 chenyi # 删除name中值为zhangsan的元素 最多删除5个,0为删除所有
ltrim history 1 5 # 只保留数组中[1-5]的元素,把其他的删除掉

删除

del history
brpop history 5 # 当list为空时,删除整个LIST,并阻塞redis进程5秒中
blpop history 5 # 删除整个list 并阻塞redis进程5秒中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值