Redis五种基本数据类型

什么是Redis

redis是一个高性能的key-value数据库,它是完全开源免费的,而且redis是一个NOSQL类型数据库,是为了解决高并发、高扩展,大数据存储等一系列的问题而产生的数据库解决方案,是一个非关系型的数据库。但是,它也是不能替代关系型数据库,只能作为特定环境下的扩充。

Redis常识

Redis默认有16个数据库

默认使用的是第0个数据库

端口号 默认6379

可以使用select 数字来切换数据库

DBSIZE 查看DB大小

keys * 查看数据库所有的key

flushdb 清空当前数据库

FLUSHALL 清空所有数据库

set name 1111

get name

111

Redis是单线程的 且速度非常快 基于内存操作 CPU不是Redis的性能瓶颈

Redis的性能瓶颈是根据机器的内存和网络带宽决定的

Redis为什么是单线程速度还是这么快?

Redis是c语言编写的 100000+的QPS 不比同样是key - value的Memecache差

Redis是把所有的数据放在内存中,所以用单线程去操作效率是最高的,多线程(CPU上下文切换 会有耗时) 对于内存系统来说 如果没有上下文切换最快。

Redis-key

启动服务 redis-serve kconfig/redis-config

测试连接

EXISTS name 判断键key是否存在

move name 1 移除当前的key

设置过期时间 EXPIRE name 10 设置key的过期时间 10秒钟自动过期 tt1 name 查看key的剩余时间

clear清理界面

type name 查看key的类型

五大基本数据类型

Redis主要有5种数据类型,包括String,List,Set,Zset,Hash,满足大部分的使用要求

数据类型可以存储的值操作应用场景
STRING字符串、整数或者浮点数对整个字符串或者字符串的其中一部分执行操作对整数和浮点数执行自增或者自减操作做简单的键值对缓存
LIST列表从两端压入或者弹出元素对单个或者多个元素进行修剪,只保留一个范围内的元素存储一些列表型的数据结构,类似粉丝列表、文章的评论列表之类的数据
SET无序集合添加、获取、移除单个元素检查一个元素是否存在于集合中计算交集、并集、差集从集合里面随机获取元素交集、并集、差集的操作,比如交集,可以把两个人的粉丝列表整一个交集
HASH包含键值对的无序散列表添加、获取、移除单个键值对获取所有键值对检查某个键是否存在结构化的数据,比如一个对象
ZSET有序集合添加、获取、删除元素根据分值范围或者成员来获取元素计算一个键的排名去重但可以排序,如获取排名前几名的用户

String类型(字符串)

内部结构使用SDS保存 类似与java中的ArrayList

常用场景:缓存功能 计数器 共享用户Session

APPEND key1 “11” 给key1追加字符串(如果没有这个key 就相当于set key)

key * 获得所以的key

EXISTS key1 判断某一个key是否存在

截取字符串STRLEN key 获取字符串长度

实现i++操作

set views 0

incr views +1操作

decr views -1操作

INCRBY views 10 +10操作

DECRBY views 10 -10操作

List集合(列表)

常用场景:粉丝列表 文章评论

可以从两端取出或压入数据 可以实现 队列 栈

LPUSH list one 将一个值或者多个值 放入列表的头部 从左边放进去

LPUSH list two

LPUSH list three

LRANGE list 0 -1 获取list全部的值

LRANGE list 0 1 获取0到1的值 获得的是 three two

RPUSH 将一个值或者多个值 放入列表的尾部 从右边放进去

移除左边第一个值 Lpop list 移除右边第一个值 Rpop list

lindex list 1获取下标为1的值

Llen list 返回列表的长度

移除特定的值

Lrem list 1 one 移除list列表其中的一个one 精准配备

Set(无序不重复集合)

自动去重 直接基于 Set 将系统里需要去重的数据扔进去,自动就给去重了

sadd myset “hello” 添加一个set无序集合 添加一个hello值

SMEMBERS myset 查看指定set的所有的值

ISMEMBER myset world 判断一个值是不是在set集合中

scard myset 查看set里面的元素个数

srem myset hello 移除hello元素

SRANDMEMBER myset 随机得到一个set里面的元素 可以在后面加数字获得的是随机的数字

spop myset 随机移除元素

Hash

包含键值对的无序散列表 本质和String没有太大区别 区别就是value变成了value)

key map

hset myhash field name新建一个hash 存放一个key vaule的值

hset myhash field name field1 name2 新增两个key value

hget myhash field 取得值

hget myhash field field2 取得2个键的值

hgetall myhash 查看所有的值

hdel myhash filed1 删除hash指定的key字段 对应的value也删除了

hgetall myhash 获得全部的值

hlen myhash 查看hash长度

HEXISTS myhash field1 判断hash中指定字段是否存在

只获得key hkeys myhash

只获取value hvals myhash

Zset(有序集合)

在set的基础上 增加了一个值

zadd myset 1 one

zadd myset 2 two 3 three 添加数据 前面的数字为序号

ZRANGE myset 0 -1 获取全部的值

ZRANGEBYSCORE salary -inf +inf按成绩排序 从最小到最大

ZRANGEBYSCORE salary -inf +inf withscores 按成绩排序 从最小到最大 同时输出成绩

ZRANGEBYSCORE salary -inf 2500 withscores 显示小于2500员工的升序排序

移除元素

zrange salary 0 -1 打印全部

zrem salart 小红 移除小红

三种特殊数据类型

geospatial 地理位置

Hyperloglog基数统计

Bitmap位图场景详解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值