Redis简介及操作命令

一、简介

REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。

Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。

 

二、String

命令

keys *  查询key列表
set 名称 值 添加或修改值
get 名称 获取值
del 名称 删除值
mset 名称 值 名称 值 批量添加或修改
mget 名称 名称 批量获取值
strlen 名称 获取值得长度
append 名称 值 在原有值得基础上追加新的内容,返回最终值的长度
incr 名称 每执行一次对数值加一,,自增效果
decr 名称 每执行一次对数值减一,,自减效果
incrby 名称 数字值 对数值增加指定的整数值   命令数值可以为负
decrby 名称 数字值 对数值减少指定的整数值   命令数值可以为负
incrbyfloat 名称 数字值 对数值增加指定的浮点值
setex 名称 有效时间 值 添加值并对此值设置有效时间    时间单位为秒
psetex 名称 有效时间 值 添加值并对此值设置有效时间    时间单位为毫秒

String的应用场景

1.用于数据库表的主键控制;

2.主页高频访问信息控制,如新浪微博大V关注数

String类型数据操作注意事项

1.数据操作不成功的反馈与数据正常操作之间的差异
  ①  表示运行结果是否成功
      (integer) 0 — false 失败
      (integer) 1 — true  成功
  ②  表示运行结果
      (integer) 3 — 3    3 个
      (integer) 1 — 1    1 个

2.数据未获取到
    (nil)等同于null

3.数据最大存储值
    512MB
4.数值计算最大识别范围(java中的long的最大值)

   9223372036854775807

5.key的设置约定

   表名:主键名:主键值:字段名

三、Hash

命令

hset key field value 添加修改数据
hget key field 获取数据
hdel key field1 [field2] 删除数据
hmset key field1 value  field2 value 批量添加修改数据
hget key field1 field2 批量获取数据
hlen key 获取值的field的个数
hexists key field 查询是否存在此字段
hkeys key 获取哈希表中所有的字段
hvals key 获取哈希表中所有的字段的值
hincrby  key field increment

指定字段的数值增加指定的整数数值

hincrbyfloat  key field increment 指定字段的数值增加指定的浮点数或者整数数值
hgetall key 获取当前key下所有信息
hsetnx key field value 当此key中存在插入的field时,会新增数据失败,不存在时新增成功

应用场景

电商网站购物车的设计和实现

注意事项

hash类型下的value只能存储字符串,不允许存其他数据类型,不存在嵌套现象.如果数据未获取到,对应的值为(nil)

每个hash可以存储 2^23-1个键值对

hash类型十分贴近对象的数据存储形式,并且可以灵活添加删除对象属性。但hash设计初衷不是为了存
储大量对象而设计的,切记不可滥用,更不可以将hash作为对象列表使用

hgetall操作可以获取全部属性,如果内部field过多,遍历整体数据效率就会很低,有可能成为数据访问瓶颈

 

四、list

数据存储要求:存储多个数据,并对数据存储的顺序进行区分

list类型:保存多个数据,底层使用双向链表存储结构实现

lpush key value1 [value2] 左添加/修改
rpush key value1 [value2] 右添加/修改
lrange key startindex stopindex 获取list的下标起始到结束的数据,下标根据需求填写
lindex key index 获取所选下标的list的值
llen key 获取当前list的元素个数
lpop key 获取并删除最左边的数据
rpop key 获取并删除最右边的数据
blpop key1 [key2] timeout 规定时间内获取并删除所有list其中一个list的最左边的数据
brpop key1 [key2] timeout 规定时间内获取并删除所有list其中一个list的最右边的数据
lrem key count value 删除指定数据   count表示删除value的个数
   

应用场景

微信朋友圈点赞

微博关注列表的顺序显示

依靠队列解决多路信息汇总问题,如多服务器日志汇总

list操作注意事项

保存的数据都是String类型的,最多存储2^32-1个

具有索引概念,但操作数据是通常以队列形式进行入队出队操作,或以栈的形式入栈出栈操作

获取全部数据操作结束索引设置为-1

list可以对数据进行分页操作,通常第一页的信息来自list

五、set

新的存储需求,存储大量的数据,在查询方面提供更高的效率

需要的存储结构:能够保存大量的数据,高效的内部存储机制,便于查询

set类型:与hash存储结构完全相同,仅存储键,不存储值,存储的键不允许重复

命令

sadd key member1 [member2] 添加修改数据
smembers key 获取数据
srem key member1 [member2] 删除数据
scard key 获取集合数据的个数
sismember key  member 校验member是否存在,存在返回1,不存在返回0
srandmember key [count] 随机获取集合中指定数量的数据
spop key 随机获取集合中某个数据并删除
sinter key1 [key2] 获取两个集合的交集
sunion key1 [key2] 获取两个集合的并集
sdiff key1 [key2] 获取两个集合的差集
sinterstore destination key1 [key2] 获取两个集合的交集且存储到指定的集合,指定的集合如果原来有数据,则会被清空
sunionstore destination key1 [key2] 获取两个集合的并集且存储到指定的集合,指定的集合如果原来有数据,则会被清空
sdiffstore destination key1 [key2] 获取两个集合的差集且存储到指定的集合,指定的集合如果原来有数据,则会被清空
smove source destination member 将指定数据从原始集合移动到目标集合

业务场景

用于随机推介类的检索,如QQ音乐每日推介

用于同类信息的关联检索,如支付宝中与好友拥有的共同好友显示

统计网站的PV日访问量,UV(cookie),IP

注意事项

set不允许重复添加

set的存储结构与hash相同,单无法启用hash的存储空间

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章