redis基础知识

文章详细介绍了Redis的基础知识,包括其作为高性能键值存储的角色,HashMap与MySQL的对比,以及Redis的高并发能力。文中还阐述了Redis的版本稳定性规则,提供了Linux环境下启动Redis的步骤,并列举了一系列Redis的关键命令,如设置密码、查看键、数据类型操作等。此外,文章涵盖了Redis的String、Hash、List、Set和Zset等数据结构的使用方法。
摘要由CSDN通过智能技术生成

redis基础知识

redis就是一个巨大的HashMap
MySQL并发 写600/s 读2000/s,Redis100K级并发
Redis的版本号第二位偶数为稳定版本,奇数为不稳定

bin目录详解

可执行文件作用
redis-server启动redis
redis-cliredis命令行客户端
redis-sentinel启动哨兵
redis-check-aofAOF持久化文件检测和修复工具
redis-check-rdbRDB持久化文件检测和修复工具
redis-bencjmark基准测试工具

linux启动redis

将redis.conf移动出来
mv redis.conf /mydata/redis-linx/redis/conf

启动
./redis-server ../conf/redis.conf

客户端登录
redis-cli
## 设置密码
方式一:临时生效

```bash
config set requirepass xxxxxx

方式二:永久生效

修改redis.conf配置文件
vim /mydata/redis-linux/conf
requirepass xxxxxx

redis全局命令

查看所有键

keys * -- 产看所有键
支持通配符查询
keys w* -- 遍历所有以w为开头的键

键总数

如果项目中要查询redis中一共有多少个key,keys *这种会全部遍历 算法复杂度为O(n)
可以使用 dbsize命令查询一共有多少键
redis种内置了一个计数器,只要新增一个key就会+1,使用这个命令就是取出count记录的值

检查键是否存在

exists k1 -- 检查键是否存在 0:不存在 1:存在

删除键

del key [key...] -- 删除键 返回的数值为成功删除的个数
支持删除多个键

键过期

expire key seconds -- 给键设置过期时间 单位s
默认set设置的key是永不过期

ttl key -- 查看key的过期时间
-1:永不过期 -2:代表键不存在 0:代表刚好过期

pexpire key seconds -- 设置过期时间为毫秒
expireat key timestamp(时间戳) -- 设置指定时间过期

对已经设置过期时间的key进行set操作,会使过期时间失效变为永久不过期
只能对key做过期时间操作,不能对value中的二级数据做过期时间

数据结构类型

type key -- 查看Value存储的数据类型

重命名

rename key newkey -- 重命名key

set name 111
set name1 222
rename name name1
get name1 -- 111

不想被覆盖可以使用renamenx key1 key2  不存在才会设置

随机返回一个key

randomkey

数据类型:value

String、Hash、List、Set、Zset

String

Redis是标准的C写的,String语言中String类型是char[],Redis并没有直接使用C的String,是自己实现的
setnx key value

存在的时候才能设置

set key value xx

存在的时候才能设置

get key

获取key的value值

mset key1 value1 key2 value2 …

一次设置多个键值对,网络编程中IO是瓶颈,一次批量多个主要是为了解决多次IO的问题

mget key1 key2 …

批量获取多个key的value,一次批量多个主要是为了解决多次IO的问题

incr key

自增1 原子性操作

decr key

自减1 原子性操作

incrby key

自增指定数值

append key value

给指定key追加value  返回value整个的长度

strlen key

返回value的长度

setrange key offset value

在指定位置设置value

getrange key start end

获取指定范围的值 0 -1返回全部

getset key value

返回key的value 并用新值覆盖  作者大概率也是为了节省IO

Hash

hmset key field value [field value …] redis4.0之后已弃用

hmset user1 name xxx age 27 hobby basketball -- 增加hash-key

hset key field value [field value …]

hset user2 name xxx age 27 hobby sleep -- 增加hash-key

hget key field

hget user1 name/age/hobby  -- 获取其中一个field的值

eg: heget user1 age  -- 27

hmget key field…

hmget user1 name age hobby -- 获取多个field的值
eg: hmget user1 name age -- xx 27

hdel key field…

hdel user1 hobby... -- 删除value值 支持删除多个

hlen key

hlen user1 -- 查看value中有多少个键值对 

hkeys key

hvals user1 -- 查询出value中所有hash的key值

hexists key field

hexists user1 name -- 判断value中某一个hash的key是否存在

hgetall key

hgetall user1 -- 获取value中所有的key-value

hincrby key field increment

hincrby user1 age 2 -- 给指定key中value中的hash自增1  如果这个键不存在,会创建新的并从0自增 返回自增后的值

List

list维护一个链表,元素可以重复 可存储2^32-1

rpush key element [element …]

rpush k1 a -- 向k1列表从右插入元素a
rpush k1 b -- 向k1列表从右插入元素b
-- 返回值为列表包含元素的个数

rpush k1 a b c d -- 也可插入多个元素

lpush key element

lpush k1 a- -- 向k1列表从左插入元素a-

lrange key start stop

lrange k1 0 -1 -- 从k1中取出指定下标的元素 0 -1 取出全部

lpop key [count]

lpop user1 -- 从左弹出一个元素 返回并删除
lpop user1 2 -- 也可指定弹出个数元素

lrem key count element

lrem k1 1 b -- 删除列表中指定元素的指定个数  返回值为成功个数

ltrim key start stop

ltrim k1 0 3 -- 截取指定下标区间的元素,不在指定区间的元素都会被删除

lset key index element

lset k1 3 aa -- 替换指定下标的元素

lindex key index

lindex k1 0 -- 获取指定下标的数据

llen key

llen k1 -- 获取数据长度

blpop key [key …] timeout

blpop k1 100 -- 移出并获取列表的第一个元素,如果列表没有元素会阻塞列表直到等待时间超时或发现可弹出元素为止
可以当一个小型MQ使用, 也可以当作一个栈(先进先出)

Set

无序、不允许有重复元素,不可用索引下标获取 可存储2^32-1 可做交集、并集、差集

sadd key member [member …]

sadd sk1 a a b c d -- 添加元素 返回值为添加成功的不重复的数据 

smembers key

smembers sk1 -- 获取set中的元素

srem key member [member…]

srem sk1 c d  -- 删除元素中指定元素 返回删除成功的元素个数

scard key

scard sk1 -- 查key中元素个数

sismember key member

sismember sk1 a -- 判断某个值是否存在

spop key [count]

spop sk1 -- 随机弹出一个元素,也可指定弹出数量
测试数据
sadd k1 a b c d e f
sadd k2 2 5 c d e f

sinter key [key…]

sinter k1 k2  - defc -- 取两个交集

sunion key [key…]

sunion k1 k2 -- 取两个并集

sdiff key [key…]

sdiff k1 k2 -- 取两个差集

sinterstore destination key [key …]

sinterstore k3 k1 k2 -- 取k1 k2的交集并存入k3

Zset

zadd key score member [sorce member …]

zadd k1 100 xxx 99 yyy -- 将一个或多个member元素及其score值加入到有序集key当中

**zrange key min max **

zrange k1 0 -1 -- 返回有序集key中,下标在min max之间的元素

zrevrank key member

zrevrank k1 xxx  -- 反转

zrem key member

zrem k1 xxx -- 删除某个member

基本数据类型图示

![在这里插入图片描述](https://img-blog.csdnimg.cn/40d1d69fe8e94b0691f4a022ca418d8c.png
文章和代码后续高级数据类型更新补充…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值