赞
踩
目录
Redis 是一种开源(BSD 许可)、内存中数据结构存储,用作数据库、缓存和消息代理。Redis 提供了诸如字符串、散列、列表、集合、带范围查询的排序集合、位图、超级日志、地理空间索引和流等数据结构。
redis主要的作用在于缓存浏览器经常访问的数据,比如热点数据等,是为了缓解后台数据库访问压力的另一种方式,不同于普通的关系型数据库,reids里储存的数据是非关联的,是以key--value形式进行存储的。
Redis是一个key-value存储系统(官网:http://redis.io),是一个分布式缓存数据库。在DB-Engines.com的数据库排行中, Redis上升排行第七,如图所示:
redis实际上是以key-value的形式进行存储,即key存储数据地址编号等,value存取对象,数值,数组等元素,具体机构如下图:
根据redis的数据结构,可以对应进行相应的操作,查询的地址诸如下图。
Redis 相关参考网址如下所示:
- Bootnb 相关:https://www.runoob.com/redis/redis-tutorial.html
- Redis 官网:https://redis.io/
- 源码地址:https://github.com/redis/redis
- Redis 在线测试:http://try.redis.io/
- Redis 命令参考:http://doc.redisfans.com/
实际上,redis的作用在将常用的数据缓存进行存储,以便更为及时和迅速的将数据传递给用户,同时也为后端数据库提供了一个缓冲的地带。
启动:
docker start redis Docker 环境下的启动
docker ps 显示运行的所有进程
ps -ef|grep redis 查看启动的redis进程信息
进入redis:
docker exec -it redis01 redis-cli 进入redis数据库
docker exec -it redis01 bash #redis01 为容器名
redis-cli /redis-cli -p 6379 登录redis服务 默认不需要密码
退出redis:
exit 退出redis服务
配置和帮助
info 查看配置信息
help 可以基于hep指令查看相关指令帮助
其他指令
clear 清除屏幕内容
shutdown 关闭redis服务
基于查看redis中的key keys *
基于key/value形式存储数据 set test1 123
基于key获取redis中存储的数据 get test1
清除redis中的数据 flushdb #单个
清除所有数据库数据 flushall
Expire (设置生效时长-单位秒)
TTL查看key的剩余时间,当返回值为-2时,表示键被删除。
当 key 不存在时,返回 -2 。 当 key 存在但没有设置剩余生存时间时,返回 -1 。
视图:
Persist (取消时长设置)
pexpire (单位毫秒)
pexpire 让key的生效时长以毫秒作为计量单位,这样可以做到更精确的时间控制。例如,可应用于秒杀场景。
视图:
字符串类型是redis中最简单的数据类型,它存储的值可以是字符串,其最大字符串长度支持到512M。基于此类型,可以实现博客的字数统计,将日志不断追加到指定key,实现一个分布式自增id,从而实现一个博客的的点赞操作等。
操作命令小结:
incr / incrby 自增 1 / 自增 n
decr/decrby 自减 1 / 自减 n
append 向尾部追加值。如果键不存在则创建该键,其值为写的value
strlen 字符串长度,返回数据的长度,如果键不存在则返回0
mset/mget 同时设置/获取多个键值
操作视图:
拓展———乱码出现的原因:
utf-8 一个中文汉字3个字节 ;gbk :一个中文汉字2个字节
编码时字符串截取的字节数不正确,因而可能实现乱码。
Redis散列类型相当于Java中的HashMap,实现原理跟HashMap一致,一般用于存储对象信息,存储了字段(field)和字段值的映射,一个散列类型可以包含最多232-1个字段。
操作命令小结:
1.设置获取对象
hset/hget 设置值 /获取值
hincrby 自增
hmset/hmget 设置和获取对象属性
操作视图:
2.查看和删除
hexists 属性是否存在
hdel 删除属性
hkeys/hvals 只获取字段名HKEYS或字段值HVALS
操作视图:
Redis的list类型相当于java中的LinkedList,其原理就就是一个双向链表。支持正向、反向查找和遍历等操作,插入删除速度比较快。经常用于实现热销榜,最新评论等的设计。
操作命令小结:
1.头尾增加元素:
lpush 在key对应list的头部添加字符串元素
rpush 在key对应list的尾部添加字符串元素
操作视图:
2. 设置修改元素
del 删除集合
linsert 在key对应list的特定位置之前或之后添加字符串元素\
lset 设置list中指定下标的元素值(一般用于修改操作)
操作视图:
3.删除元素
lrem 从key对应list中删除count个和value相同的元素,
count>0时,按从头到尾的顺序删除
count<0时,按从尾到头的顺序删除
count=0时,删除全部
操作视图:
4.保留指定元素;
ltrim 保留指定key 的值范围内的数据
操作视图:
5.头尾部删除元素:
lpop 从list的头部删除元素,并返回删除元素
rpop 从list的尾部删除元素,并返回删除元素
llen :返回key对应list的长度
lindex:返回名称为key的list中index位置的元素
rpoplpush:从第一个list的尾部移除元素并添加到第二个list的头部,最后返回被移除的元素值,整个操作是原子的.如果第一个list是空或者不存在返回nil
Redis的Set类似Java中的HashSet,是string类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。Redis中Set集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。
操作命令小结:
sadd 添加元素 重复元素添加失败,返回0
smembers 获取内容
spop 移除并返回集合中的一个随机元素
scard 获取成员个数
smove 移动一个元素到另外一个集合
sunion 并集
本章节主要是对redis进行简单介绍,对于redis常用数据类型存储string ,hash,list,set等基本操作进行了分析和实践,结合指令特性理解其应用场景,
其中string的主要操作包括自增自减,追加字符串,设置值等操作,hash无自减,多了检查属性是否存在(hexits),list数据类型等同于数据操作,而set 类型类似hashset。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。