redis—基本数据类型

redis简介

内存中的非关系型数据库(nosql),以键值对KV的形式存储数据。

单线程:redis网络请求模块使用单线程来处理所有网络请求(所以无需担心线程安全问题),但redis其他工作模块照样是使用多线程。

速度快:redis数据存在于内存中,读写速度快;

              单线程redis可完成10万次/秒的查询;

              内部采用多路复用I/O,防止I/O阻塞影响效率,I/O影响redis速度,多路复用切换时比多线程I/O切换更省时间和资源。

redis多用于热数据的存储,读写响应快,准确性要求不是特别高的数据,如访问量;服务集群或是分布式的时候数据出现一致性等问题。

影响redis速度主要因素:I/O与redis之间的网络问题。

场景一:session丢失   集群系统登录访问Tomcat1,存储sessionId在tomcat1上,当再次访问服务,请求别分发到tomcat2中,此时并没有登录sessionId,会再次要求用户登录。

场景二:分布式锁        线程安全问题,当用户访问Tomcat1的中加锁的代码时,另外一个请求访问到tomcat2中同样的加锁代码,便会出现线程安全问题,此时需要将此代码的锁状态放在redis中。

key的命名规范

表名:主键名:主键值:字段名       如: user:id:s5d45tbtb1ts:age   18

数据类型

所有的key都是String 类型,value分String、List、Set、ZSet、Hash

ttl  key(time to live)key的剩余存活时间
keys *查看所有的key
keys *a查看以a结尾的key
del  key删除key

String

set k v/mset k1 v1 k2 v2一次设置一个/多个k/v
get k/mget k1 k2一次获取一个/多个k的值
strlen k获取k的v的长度
append k在k的v后添加值
getset k获取k的v值并设置k的新值,v无值返回nil
getrange key start end 截取value内容,含头尾,对原值无影响
setex key seconds value 设置k的值和k的生存时长(秒)
psetex key milliseconds value设置k的值和k的生存时长(毫秒)
setnx key value仅当key不存在时才执行set值操作
msetnx key value [key value ...]仅当所有key不存在时才执行set值操作
incr key/decr keykey的值加/减1
decrby/incrby key decrement key的值加/减decrement (整数)
incrbyfloat key incrementkey的值加/减decrement (浮点数)

List

有序可重复,类似Java中的List,list中的元素为String类型

lpush/rpush key value [value ...] 

将一个或多个值 value 插入到列表 key 的

表头 (表末),当key不存在时,新建并执行插入

lpushx/rpushx key value意思同上,区别是当 key 不存在时, LPUSHX/RPUSHX 命令什么也不做。 
lpop/rpop key获取从表头(表末)的值(移除操作)
llen key 返回列表 key 的长度
lrange key start stop

获取key指定下标区间的元素,下标从0开始,

-1、-2代表倒数第一个和倒数第二个元素

lindex key index 获取指定下标的元素,下标从0开始,

-1、-2代表倒数第一个和倒数第二个元素

lset key index value将列表index位置的元素设置为value
linsert key BEFORE|AFTER oldvalue value在list老值的前(后)插入新值value
lrem key count value

从列表中移除count个值等于value的元素

count>0,从头到尾删除count个,

count=0,删除所有等于value的元素,

count<0,从尾到头删除count绝对值个数的值等于value的元素

ltrim key start stop保留下标start到end的元素,其他的删掉

Set

无序不可重复

sadd key  member [member ...] 集合中添加一个或多个值,已存在的值忽略
smembers key 返回集合key中所有元素
scard key返回集合key中的元素个数
spop key随机返回集中中的一个元素并移除
srem key member [member ...]删除指定的一个或多个元素
smove S1 S2 member

将指定元素从一个集合移动到另一个集合中

(原集合元素member删除)

srandmember key随机返回集合中的一个元素,和spop一样,只是没有移除操作
sismember key member判断集合中是否包含指定元素
sdiff key [key ...]获取 减去指定集合中共有元素后 的集合(差集)
sinter key [key ...] 求给定集合的交集
sunion key [key ...] 求给定集合的并集

ZSet(Sorted Set)

有序不可重复集合

zadd key score member [ [score member] [socre member] ... ]

将一个或多个元素及其score值加入到有序集合中(通过score排序,score可以是整数和双精度浮点数)

zcard key返回集合元素个数
zrange key start stop [WITHSCORES]返回指定下标区间内的元素,元素的位置按score值从小到大排序,位置下标从0开始,-1:最后一个,-2:倒数第二个;加上WITHSCORES后联通score值一同返回
zrevrange key start stop [WITHSCORES]与zrange不同的是用倒序
zrangebyscore key min max [WITHSCORES] 返回指定score范围内的元素(含头尾)
zrank key member 返回指定元素的排名(第几)(按score递增排序)
zrevrank key member返回指定元素的排名(第几)(按score递减排序)
zscore key member返回指定元素的score值
zcount key min max返回score值介于min和max值之间(包含)的元素数量
zincrby key increment member给指定的元素加减分,increment为整数或双精度浮点数
zrem key member [member ...]移除指定元素

Hash

hset key field value 将哈希表 key 中的域 field 的值设为 value 
hget key field 返回哈希表 key 中给定域 field 的值
hgetall key获取哈希表key中所有的域和值
hkeys key获取哈希表key中所有的域
hvals key获取哈希表key中所有的值
hdel key field [field ...]删除哈希表key中指定的一个或多个域
hexists key field查看哈希表 key 中,给定域 field 是否存在
hsetnx key field value当哈希表key中不存在此field时执行添加元素操作
hmset key field value [field value ...] 往哈希表key中存入一个或多个域-值对
hmget key field [field ...]获取哈希表key中指定的一个或多个域的值
hlen key返回哈希表 key 中域的数
hincrby key field increment对指定field的值进行加减increment操作
hincrbyfloat key field increment对指定field的值进行浮点加减increment操作
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值