Redis的五大数据类型


启动后杂项基础知识

  • /usr/local/bin下执行命令redis-benchmark可以测试redis在机器运行的效能
  • 默认端口是6379
  • 单进程
    • 单进程模型来处理客户端的请求。对读写等事件的响应 是通过对epoll函数的包装来做到的。Redis的实际处理速度完全依靠主进程的执行效率
    • Epoll是Linux内核为处理大批量文件描述符而作了改进的epoll,是Linux下多路复用IO接口select/poll的增强版本, 它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。
  • 默认16个数据库,类似数组下表从零开始,初始默认使用零号库,可在配置文件配置
  • select命令切换数据库
  • dbsize查看当前数据库的key的数量
  • flushdb:清空当前库
  • flushall;通杀全部库
  • 统一密码管理,16个库都是同样密码,要么都OK要么一个也连接不上
  • Redis索引都是从零开始

Redis的五大数据类型

keys关键字

  • keys *:查看所有key
  • exists [key]:判断某个key是否存在
  • move key db :移动到另一个库中,移动后当前库就没有了
  • expire key 秒:为给定的key设置过期时间
  • ttl key :查看还有多少秒过期
    • -1表示永不过期
    • -2表示已过期
  • type key 查看你的key是什么类型

String

  • string是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value。
  • string类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象 。
  • string类型是Redis最基本的数据类型,一个redis中字符串value最多可以是512M

常用命令

- set/get/del/append/strlen 
- Incr/decr/incrby/decrby,一定要是数字才能进行加减
- getrange/setrange
- setex(set with expire)键秒值 / setnx(set if not exist)
- mset/mget/msetnx
- getset(先get再set)


Hash(重要)

KV模式不变,但V是一个键值对

#添加一个/查询一个/添加多个/查询多个/删除一个或多个
hset/hget/hmset/hmget/hgetall/hdel key field value
hset user id 1
hmset user name birdy age 18
hmget user id	#1
hmget user #1 birdy 18
hgetall user #id 1 name birdy age 18
#获取哈希表key的字段数量
hlen key
hlen user #3
#哈希表key是否存在field属性
hexists key field
#获取哈希表key的所有属性/值
hkeys/hvals key
#为哈希表key执行字段的整数值/浮点值增加increment
hincrby/hincrbyfloat key filed increment
#添加并判断是否已存在,若存在则添加失败
hsetnx key field value

List

可重复单值多value,list存储类似与栈

常用命令

#push:插入 l(left):栈顶,插入与读取顺序相反 r(right):栈尾,顺序相同 	lrange:查
lpush/rpush/lrange
LPUSH list1 1 2 3 4 5 
LRANGE list1 0 -1	#0和-1是索引值,0~-1表示查全部 结果为 5 4 3 2 1
LPUSH list2 1 2 3 4 5 
LRANGE list2 0 -1 #1 2 3 4 5

#弹出,l:栈顶,后进先出 r:栈尾,先进先出
lpop/rpop
lpop list1 #4 3 2 1
rpop list1 #4 3 2

#按照索引下标获得元素(从上到下)
lindex
lindex list2 2 #3

#获取list长度
llen
llen list2 #5

# 删N个value
lrem key N value
rpush list3 1 1 2 2 2 2
lrem list3 3 2 #删除3个2 结果:1 1 2

#截取指定范围的值后再赋值给key
ltrim key start end
rpush list4 1 2 3 4 5
ltrim list4 0 2
lrange list4 0 -1 #1 2 3

#移除源列表的最后一个元素添加到目的列表
rpoplpush 源列表 目的列表

#通过索引改变列表值
lset key index value

#在目标值前/后插入value
linsert key before/after 目标值 value

Set

无重复单值多value

#添加/查询/是否存在
sadd/smembers/sismember key member

#获取集合里面的元素个数
scard key

#删除集合中元素
srem key value 

#随机返回集合中1个或多个随机数
srandmember key [count] 

#随机出栈
spop key 

#将key1里的某个值赋给key2
smove key1 key2 在key1里某个值
#数学集合类
差集:sdiff 交集:sinter 并集:sunion
sadd set1 1 2 3 4 5
sadd set2 a b c 1 2
sdiff set1 set2 #3 4 5
sinter set1 set2 #1 2
sunion set1 set2 #1 2 3 4 5 a b c 真实情况下这些值是没有顺序的

Zset

在set基础上,加一个score值。 之前set是k1 v1 v2 v3, 现在zset是k1 score1 v1 score2 v2

#向有序集合中添加或更新成员/查询成员
zadd key score1 member/zrange key 索引start 索引end [withscores]
ZADD score 60 d 70 c 80 b 90 a
ZCARD score 0 -1 #d c b a 只有member
ZCARD score 0 -1 withscores #60 d 70 c 80 b 90 a 

#返回满足分数区间的值
zrangebyscore key min max
ZRANGEBYSCORE score 60 80 #d c b
选项:
	withscores 是否带分数返回
	( 不包含
	limit 开始索引 结束索引
#删除有序结合成员
zrem key 某分数对应下member
ZREM score d
ZRANGE score 0 -1  #c b a
#计算有序区间的成员数
zcard/zcount key min max
#获得索引值
zrank key member
zrank score a #2,a的索引为2
#获得成员对应分数
zscore key member
zscore score a #90
#逆序获得下标值
zrevrank key member
zrevrank score a #0

#逆序查询成员
zrevrange key start end 
#查询区间成员并逆序显示
zrevrangebyscore key min max


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM