码迷,mamicode.com
首页 > 其他好文 > 详细

Redis相关

时间:2019-05-09 15:10:46      阅读:97      评论:0      收藏:0      [点我收藏+]

标签:名称   字符   策略   exp   理解   member   插入   关联   批量   

1、数据结构服务器:存储key-value形式的数据,value值可以是String字符串(最大存储512M),Map(哈希),列表List(字符串列表),Set集合(String类型)和有序集合
2、redis特点:
(1)可以持久化,将内存中的数据持久化到硬盘,再次启动的时候直接加载进内存
(2)多样的数据存储形式,String,List,Map,Set
(3)支持数据备份
(4)Redis的操作是原子性的
(5)Redis运行在内存中,读写速度都非常快
3、windows下安装Redis:https://github.com/MicrosoftArchive/redis/releases,解压文件后的目录里主要文件redis-server.exe,redis-cli.exe,redis.conf
在DOS窗口的解压Redis目录启动Redis服务器,命令:redis-server.exe redis.windows.conf
新打开DOS窗口运行客户端redis-cli.exe -h 127.0.0.1 -p 6379,通过set myKey WangSong 和 get myKey 设置key-value和取出key的值
4、Redis 的配置文件位于 Redis 安装目录下,文件名为 redis.conf,windows下的Redis是redis-windows-server.conf
5、String类型通过set和get命令,Map类型通过hmset和hget命令,List类型通过lpush和lrange,Set集合:添加一个 string 元素到 key 对应的 set 集合中,成功返回1,如果元素已经在集合中返回 0,如果 key 对应的 set 不存在则返回错误
通过sadd和smembers命令,Zset(有序集合):Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员
++++++++++++redisOneByOne就是通过Set集合的存储类型++++++++++++++++++++++++++++
6、相关的命令
SET key value String类型设置
GET key String类型获取
MSET key value[key value] 一次性设置多个值
SETEX key seconds value 将value关联到key,并设置过期时间
SETNX key value key不存在的时设置key-value,如果已经存在了,返回0(不覆盖原来的值)
DEL key 删除某个键值 删除成功返回1
LPUSH key value [value] List类型设置,将一个或者多个值插入列表头部
LRANGE key start end 列出范围内的列表值
HMSET key field value [field value] 同时设置多个哈希字段值
HSET key field value 设置单独的哈希key中的field字段设为value
HGET key field 获取哈希指定字段值
HMGET key field [field] 获取所有指定的字段值
HDEL key field [field] 删除指定的哈希字段值
HEIXSTS key field 判断是否存在指定的哈希字段值
SADD key member [member] 向集合中一次添加一个或多个值
SREM key member [member] 一出一个或多个成员
EXISTS key 是否存在某个键 存在返回1 不存在返回0
DUMP key 序列化某个key,并返回序列化的值
EXPIRE key seconds 给指定的key设置过期时间,用秒计
PEXPIRE key milliseconds 给指定的key设置过期时间,用毫秒计
MOVE key db 将当前的redis中的key数据移到指定的db中
PERSIST key 去除key的过期时间,使key的数据持久化
RENAME key newKey 更新key的名称
PTTL 返回过期时间,以毫秒计
TTL 返回过期时间,以秒计
7、redis的发布订阅功能
SUBSCRIBE channel [channel] 订阅一个或者多个频道
PUBLISH channel message 发布某个频道的消息内容
8、redis的事物功能
(1)批量操作在发送 EXEC 命令前被放入队列缓存。
(2)收到 EXEC 命令后进入事务执行,事务中任意命令执行失败,其余的命令依然被执行。
(3)在事务执行过程,其他客户端提交的命令请求不会插入到事务执行命令序列中。
事例:
redis 127.0.0.1:7000> multi 命令MULTI 标记一个事物的开始
OK
redis 127.0.0.1:7000> set a aaa
QUEUED 进入队列
redis 127.0.0.1:7000> set b bbb
QUEUED
redis 127.0.0.1:7000> set c ccc
QUEUED
redis 127.0.0.1:7000> exec 执行事物块内的所有命令
1) OK
2) OK
3) OK
注意事项:单个 Redis 命令的执行是原子性的,但 Redis 没有在事务上增加任何维持原子性的机制,所以 Redis 事务的执行并不是原子性的。事务可以理解为一个打包的批量执行脚本,但批量指令并非原子化的操作,中间某条指令的失败不会导致前面已做指令的回滚,也不会造成后续的指令不做。
也就是说:如果在 set b bbb 处失败,set a 已成功不会回滚,set c 还会继续执行。


9、缓存技术考虑的问题包括:存储方式、多级缓存、命中率、更新策略
10、专业术语:缓存命中、没有命中、更新策略、缓存失效、缓存成本、缓存不可用造成的雪崩效应

Redis相关

标签:名称   字符   策略   exp   理解   member   插入   关联   批量   

原文地址:https://www.cnblogs.com/ws-zhuli/p/10838449.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!