reids基础知识和命令

什么是redis

redis本质上是一个高性能的键值数据库,是nosql数据库的一种.通常被认为是一个数据结构服务器,主要是因为其有着丰富的数据结构

redis支持的数据类型

字符串String、列表List,、集合Set、散列表Hash、有序集合Zset。

redis可以做什么

计数器,缓存,消息队列(发布/订阅功能),分布式锁实现

Redis的优点

  1. 速度快:使用标准C写,所有数据都在内存中完成,读写速度分别达到10万/20万 。
  2. 丰富的数据类型 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
  3. 自动操作,对不同数据类型的操作都是自动的
  4. 快速的主从复制,保证了数据,和服务的安全性

Redis的缺点

数据库容量受到物理内存的限制

Redis的存储机制和持久化方案

RDB持久化策略 :使用快照的方式,是redis默认的方式,

原理:先将数据存储到内存,当数据到达设定的值后,触发一次转存操作

AOF持久化策略:需要手动开启.

原理:没执行一条会更改数据的命令,都会直接持久化到硬盘中指定的aof文件, 其存储的不是数据,而是执行的命令

Redis是单线程的吗

是的,redis为了效率最大化,使用内存存储方法,这样做可以避免多线程会出现的上下文切换,对于一个内存的系统来说,是没有上下文切换的问题的.

redis的使用

下载安装包,引入到Linux系统,一般会放到/usr/local/src/目录下

解压

tar -xvf redis-5.0.4.tar.gz

安装 在redis的跟目录下执行/usr/local/src/redis/src

make : 加载环境

在这里插入图片描述

返回上图后使用命令

make install 安装

修改redis的配置文件

命令: vim redis.conf 进入到配置文件并可以进行修改

关闭保护模式

在这里插入图片描述

开始后台运行

在这里插入图片描述

**启动reids服务 **启动默认的redis 端口是6379

启动命令: redis-server redis.conf

进入客户端命令: redis-cli -p 6379

exit 退出命令界面

进入客户端测试是否启动成功

关闭Redis命令:

redis-cli -p 6379 shutdown

reids 常用命令

登录 redis-cli -p 5566 -a password
检查key是否存在 EXISTS key
搜索某关键字 KSYS *4
返回一个Key所影响的vsl的类型 TYPE key

1.1 Redis命令

1.1.1 String类型

命令说明案例
set添加key-valueset username admin
get根据key获取数据get username
strlen根据key获取值的长度strlen key
exists判断key是否存在exists name 返回1存在 0不存在
del删除redis中的keydel key
Keys用于查询符合条件的keykeys * 查询redis中全部的key keys n? 使用占位符获取数据 keys nam* 获取nam开头的数据
mset赋值多个key-valuemset key1 value1 key2 value2 key3 value3
mget获取多个key的值mget key1 key2
append对某个key的值进行追加append key value
type检查某个key的类型type key
select切换redis数据库select 0-15 redis中共有16个数据库
flushdb清空单个数据库flushdb
flushall清空全部数据库flushall
incr自动加1incr key
decr自动减1decr key
incrby指定数值添加incrby 10
decrby指定数值减decrby 10
expire指定key的生效时间 单位秒expire key 20 key20秒后失效
pexpire指定key的失效时间 单位毫秒pexpire key 2000 key 2000毫秒后失效
ttl检查key的剩余存活时间ttl key -2数据不存在 -1该数据永不超时
persist撤销key的失效时间persist key

1.1.2 Hash类型

说明:可以用散列类型保存对象和属性值

例子:User对象{id:2,name:小明,age:19}

命令说明案例
hset为对象添加数据hset key field value
hget获取对象的属性值hget key field
hexists判断对象的属性是否存在HEXISTS key field 1表示存在 0表示不存在
hdel删除hash中的属性hdel user field [field …]
hgetall获取hash全部元素和值HGETALL key
hkyes获取hash中的所有字段HKEYS key
hlen获取hash中所有属性的数量hlen key
hmget获取hash里面指定字段的值hmget key field [field …]
hmset为hash的多个字段设定值hmset key field value ,[field value …]
hsetnx设置hash的一个字段,只有当这个字段不存在时有效HSETNX key field value
hstrlen获取hash中指定key的值的长度HSTRLEN key field
hvals获取hash的所有值HVALS user

1.1.3 List类型

说明:Redis中的List集合是双端循环列表,分别可以从左右两个方向插入数据.

List集合可以当做队列使用,也可以当做栈使用

队列:存入数据的方向和获取数据的方向相反

栈:存入数据的方向和获取数据的方向相同

命令说明案例
lpush从队列的左边入队一个或多个元素LPUSH key value [value …]
rpush从队列的右边入队一个或多个元素RPUSH key value [value …]
lpop从队列的左端出队一个元素LPOP key
rpop从队列的右端出队一个元素RPOP key
lpushx当队列存在时从队列的左侧入队一个元素LPUSHX key value
rpushx当队列存在时从队列的右侧入队一个元素RPUSHx key value
lrange从列表中获取指定返回的元素LRANGE key start stop Lrange key 0 -1 获取全部队列的数据
lrem从存于 key 的列表里移除前 count 次出现的值为 value 的元素。 这个 count 参数通过下面几种方式影响这个操作: · count > 0: 从头往尾移除值为 value 的元素。 · count < 0: 从尾往头移除值为 value 的元素。 · count = 0: 移除所有值为 value 的元素。LREM list -2 “hello” 会从存于 list 的列表里移除最后两个出现的 “hello”。 需要注意的是,如果list里没有存在key就会被当作空list处理,所以当 key 不存在的时候,这个命令会返回 0。
Lset设置 index 位置的list元素的值为 valueLSET key index value

1.1.4 Redis事务命令

说明:redis中操作可以添加事务的支持.一项任务可以由多个redis命令完成,如果有一个命令失败导致入库失败时.需要实现事务回滚.

命令说明案例
multi标记一个事务开始127.0.0.1:6379> MULTI
exec执行所有multi之后发的命令 提交127.0.0.1:6379> EXEC
discard丢弃所有multi之后发的命令回滚
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值