Redis 基础入门

Redis :Remote Dictionary Server

概述:Redis是一个基于内存的C语言实现的key-value结构的字典服务器;支持每秒11万次查询,8万1次写操作,常用作非关系型数据库NO-SQL

Redis和MySQL有什么区别?

数据关联性
Redis:非关系型数据库,key-value结构,数据之间没有关联性
MySQL:关系型数据库,表与表之间存在关联关系

存储位置不同:

Redis数据存储在内存中, 虽然有持久化机制。
MySQL数据存储在磁盘中,一个库对应一个文件夹

应用场景

Redis 主要做数据缓存,作为分布式锁,消息队列(不常用)
MySQL主要用于存储数据

Redis服务配置

linux:

找到配置文件,做如下修改

默认只能本机访问 ,注释掉
bind 127.0.0.1 

默认开启受保护模式,修改成no, 即允许外部(远程访问)
protected-mode yes   

默认是被注释的,解除注释,修改密码,使用密码登录
requirepass 密码      

防火墙开放6379端口
重启服务

redis-server 启动脚本,参数是配置文件

示例:

/usr/local/redis-4.0.0/src/redis-server   /usr/local/redis-4.0.0/redis.conf

redis-cli 客户端脚本

./redis-cli -h ip -p 6379 -a 密码

Redis有8种数据类型,其中5种为常见数据类型,也是经常使用的

一、string
key : value 结构

1 设置值set
格式:set key value
示例:set name zhangsan

2 设置带有过期时间的key,单位秒
格式:setex key time value

存一个有效期20秒的 key为name, value为zhangsan的键值对
示例:setex name 20 zhangsan 

3 带条件的设置setnx                  ------【常做分布式中的锁】
格式:setnx key value
解释:判断性添加,如果key不存在,添加键值对,存在不做处理返回0。
值得一说的是,setnx无法在设置key的同时设置失效时间,想要设置就要使用expire key time
然而这两步就不是一个原子操作,多线程会有问题,推荐使用redisson,其实现就是redis + lua脚本

4 获取值get
格式:get key
示例:get name

5 删除key
del key

6.1 如果value是int类型的,可以使用incr/decr对值进行自增/自减
示例 
设置值: set a 10
incr a  自增1
decr a  自减1

应用场景:app应用中的 点赞数的记录

6.2 还有 自增自减指定的值
incrby key 更新数值
decrby key 更新数值

7 批量设置key-value
mset key1 value1 key2 value2...
批量获取值
mget key1 key2 ...


8. 在key对应的value后,追加内容
append key value

9. 查看value字符串的长度
strlen key

二、hash

key : [key1 : value1 , 2 : value2 …]
一个大key下存储多个key-value

适合存储序列化后的对象

1 设置值hset
格式:hset key  key1 value1
示例:hset java javaSE 111,javaEE 222

2 获取值hget
格式:hget key field value

根据大key再根据小key获取值
示例:hget java javaEE

3 删除小key         hdel key  key1

示例:hdel java javaSE

4 获取key关联的所有小key列表:hkeys

格式:hkeys key
示例:hkeys java

5 获取key关联的所有小key对应的值:hvals
格式:hvals key


6 获取key关联的所有小key和值:hgetall
格式:hgetall key

7 批量操作
 hmset key key1 value1 key2 value2...
 hmget key key1 key2...

8 自增(指定自增的值)
hincrby key key1 更新值

9 统计key下的小key个数
hlen key

三、list
结构 key : value1,value2 …
有序,可以重复

每一个key 代表一个list,key 就是list的名字,不要看蒙了哈

1 从左边入队:lpush
格式:lpush key  value1 , value2 ....

2 更新指定索引位置的值
lset key index value

3 弹出(移除)最左边的value,并返回值:lpop
格式:lpop key

4 弹出(移除)最右边的value,并返回值:rpop
格式:rpop key

5 阻塞等待式弹出:brpop
格式:brpop key
解释:弹出(移除)最右边的value,并返回值,
如果key内没有value, 等待指定时间,没有指定时间一直阻塞等待。

6 计算list的长度:llen
格式:llen key


7 获取key对应的指定范围的元素:lrange

格式:lrange key startIndex stopIndex

解释:返回从开始到最后即倒数第一个范围内的元素列表
示例 : lrange key 0 -1 

8 获取指定索引位置的数据
lindex kek index

四、set
结构: key : value1,value2 …
无序,不重复

1 新增集合元素:sadd
格式:sadd key value1 value2 ...
解释:新增集合key,并添加元素value ,重复元素会自动过滤

2 获取集合所有元素:smembers
格式:smembers key

3 求集合的元素个数:scard
格式:scard key

4 集合求交集:sinter
格式:sinter key1 key2 ...

5 集合求并集:sunion
格式:sunion key1 key2 ...

6 集合求差集:sdiff
格式:sdiff key1 key2 ...

解释:找key1中key2没有的元素(value), 就是求差集 或者说 补集


7 删除元素:srem
格式:srem key value1 [value2 ...]

解释:删除key中 指定的 一个或多个元素

五、sortedset

结构: key : a (score1) , b (score2) ,c (score3) …

a、b、c 为value之一,score 为double类型的分值 或者说 权重
score 用作排序。

别名 zset 即有序的set
不可重复、有序

1 新增集合元素:zadd
格式:zadd key score1 value1 [score2 value2 ...]
解释:向有序集合添加一个或多个值,带分数

2 获取指定范围内有序集合的元素列表:zrange
格式:zrange startIndex stopIndex [WITHSCORES]

3 更新分值:zincrby
格式:zincrby key increment value

解释:修改指定的value 的分数
示例:zincrby name -5 zhangsan

4 删除集合中元素:zrem
格式:zrem key value1 [value2 ...]

5 查看指定的的value分数
zscore key value


6 根据score的范围查询member数量
zcount key min max

另外 删除key 的通用方法是 del key

1.	查看Redis中的全部的key(pattern: *, xxx*, *xxx)
keys pattern

2.	查看某一个key是否存在(1 - key存在,0 - key不存在)
exists key

3.	删除key
del key [key ...]

4.	设置key的生存时间,单位为秒,单位为毫秒,设置有效时长
expire key second
pexpire key milliseconds

5.	设置key的生存时间,单位为秒,单位为毫秒,设置能活到什么时间点
expireat key timestamp
pexpireat key milliseconds

6. 查看key的剩余生存时间,单位为秒,单位为毫秒(-2 - 当前key不存在,-1 - 当前key没有设置生存时间,具体剩余的生存时间)
ttl key
pttl key

7. 移除key的生存时间(1 - 移除成功,0 - key不存在生存时间,key不存在)
persist key 

8.	选择操作的库
select 0~15

9.	移动key到另外一个库中
move key db
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值