Redis

Posted 耍流氓的兔兔

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis相关的知识,希望对你有一定的参考价值。

 

什么是Redis:

  Redis是C语言开发的开源的高性能键值对(key-value)数据库,支持String类型、map散列类型、list列表类型、set集合类型、sortedset有序集合类型

  参考链接:http://www.runoob.com/redis/redis-tutorial.html

什么是NoSql:
  非关系型数据库,它的全名Not only sql
  解决高并发、高可用、高可扩展,大数据存储等一系列问题
  高并发:双十一的高并发
  高可用:一台机器宕机,不能影响服务的提供,另一台机器必须顶替上
  高可扩展:随时扩展新的需求
NoSql分类: (
1)MongoDB:文档型数据库,日志 (2)HBase:列存储数据库,分布式文件系统,大数据存储,例如用户的购买行为 (3)redis:键值存储数据库,应用于系统缓存,如首页展示的商品列表 (4)Neo4J、InfoGrid:图形数据库,社交网络常用

Redis应用场景:

  缓存(数据查询、短连接、新闻内容、商品内容)

  分布式集群架构中的session分离(单点登录的用户token串)

  任务队列。(秒杀、抢购、12306等等)

  聊天室的在线好友列表

  应用排行榜

  网站访问统计

  数据过期处理

数据类型String:

set key value 赋值
get key 取值
getset key value 取值并赋值

mset key value [key value ...] 设置多个键值
mget key [key ...] 获取多个键值

del key 删除

incr key 让当前键值递增,并返回递增后的值
incrby key increment 增加指定的整数

decr key 递减
decrby key decrement 减少指定的整数

append key value 向键值的末尾追加value,如果键不存在则将该键的值设置为value

strlen key 返回键值的长度,如果键不存在则返回0

数据类型hash:

hset 不区分插入和更新操作,当执行插入操作hset命令返回1,当执行更新操作时返回0
hset key field value 一次设置一个字段的值
hmset key field value [field value ...] 一次设置多个字段的值
hsetnx key field value 当字段不存在时赋值,类似hset,区别在于如果字段存在,不执行任何操作

hget key field 一次获取一个字段的值
hmget key field field [field ...] 一次获取多个字段的值
hgetall key 获取所有字段的值

hdel key field [field ...] 可以删除一个或多个字段,返回值是被删掉的字段个数

hincrby key field increment 增加

hexists key field 判断字段是否存在

hkeys key 只获取字段名
hvals key 只获取字段值

hlen key 获取字段数量

 数据类型list:

ArrayList和LinkedList的区别:

  Arraylist是使用数组来存储数据,特点:查询快、增删慢

  Linkedlist是使用双向链表存储数据,特点:增删快、查询慢,但是查询链表两端的数据也很快

  Redis的list以存储一个有序的字符串列表,常用的操作是向列表两端添加元素,或者获得列表的某一个片段

 

lpush key value [value ...] 向列表左边增加元素
rpush key value [value ...] 向列表右边增加元素

lrange key start stop 获取列表某一片段,将返回start、stop之间的元素(包含两端的元素),索引从0开始,索引可以为负数

lpop key 从列表左边弹出一个元素,并返回被移除的值
rpop key

llen key 获取列表中元素的个数

lrem key count value 删除列表中前count个值为value的元素,返回实际删除的元素个数
  count > 0 从左边开始删除
  count < 0 从右边开始删除
  count = 0 删除所有值为value的元素

lindex key index 获得指定索引的元素值
lset key index value 设置指定索引的元素值

lreim key start stop 保留指定片段

linsert key before | after pivot value 在列表中从左到右查找pivot的元素,然后根据第二个参数是before还是after来决定将value插入到该元素的前面还是后面

rpoplpush source destination 将元素从一个列表转移到另一个列表中

 数据类型set:

sadd key member [member ...] 增加元素,无法重复添加
srem key member [member ...] 删除元素

smembers key 获得集合中所有元素

sismember key member 判断元素是否在集合中

sdiff key [key ...] A-B 求A和B的差集
sinter key [key ...] A||B 求A和B的交集
sunion key [key ...] A+B 求A和B的并集

scard key 获得集合中元素的个数

spop key 从集合中弹出一个元素,集合无序,会随机选择一个元素弹出

 数据类型sortedSet

sortedset是有序集合,可排序,但是唯一,和Sets相比,Sorted Sets增加了一个权重参数score,使得集合中的元素能够按score进行有序排列

zadd key score member [score member ...] 向有序集合中加入一个元素和该元素的权重,如果该元素已经存在则会覆盖

zscore key member 获取元素的权重

zrem key member [member ...] 移除有序集key的一个或多个成员,不存在的成员将会被忽略

zrange key start stop [withscores] 获得排名在某个范围内的元素列表
zrevrange key start stop [withscores] 按照排名倒序获得元素

zrank key member 获取元素排名
zrevrage key member 倒序

zrangebyscore key min max [withscores] [limit pooset count] 获得指定分数范围内的元素

zincrby key increment member 增加某个元素的分数

zcard key 获得集合中元素的数量

zcount key min max 获得指定分数范围内的元素个数

zremrangebyrank key start stop 按照排名范围删除元素
zremrangebyscore key min max 按照分数范围删除元素

 数据类型keys:

keys list* 返回满足list*的所有key

exists key 判断key是否存在

del key 删除一个key

rename key newkey 重命名key

type value 判断值的类型

 redis在实际使用过程中更多的用作缓存,然而缓存的数据一般都是需要设置生存时间的,即:到期后数据销毁。
 
 EXPIRE key seconds 设置key的生存时间(单位:秒)key在多少秒后会自动删除  
 TTL key 查看key生于的生存时间
 PERSIST key 清除生存时间
 PEXPIRE key milliseconds 生存时间设置单位为:毫秒

以上是关于Redis的主要内容,如果未能解决你的问题,请参考以下文章

redis存储session配制方法

Redis实现分布式锁(设计模式应用实战)

Redis实现分布式锁(设计模式应用实战)

Redis缓存:java语言注释符号,附超全教程文档

spring boot 整合 redis

Redis 学习 —— 数据类型及操作