redis常用命令

Redis

Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API.

非结构化的, 非关联的.

数据结构相对固定, 相关业务对数据的安全性, 一致性要求较高. - 关系型数据库(MySQL) 事务很强大.

数据结构不固定, 对一致性,安全性要求不高, 对性能有要求. - 非关系型数据库(redis)

http://www.redis.cn/commands.html

MySQL表
主键姓名年龄性别
1张三15
2璐璐18
3李四20
redis
1: {name: 张三, age: 15, gender:}
2: {name: 璐璐, age: 18, gender:}
3: {name: 李四, age: 20, gender:}
redis特点.
  1. key-value型, value支持多种不同的数据结构, 功能比较丰富.
  2. 核心命令执行是单线程的. 每个命令都具有原子性. 6.0以后加入的多线程只是用来处理网络数据和协议.
  3. 基于内存, 低延迟, 效率高.
  4. 基于内存, 也支持数据持久化.
  5. 支持集群.
redis支持的数据结构.
数据类型说明
stringhello
hash{name: 李四, age: 20, gender: 男}
set{1, 2, 3}
list[1, 2, 3, 4]
SortedSet{a:1, b:2,c:3} score
redis通用命令.
  1. keys: 查看所有匹配给定的模式的key.
  2. exists: 判断key是否存在.
  3. expire: 给一个key设置有效期, 有效期到期该key会被删除.
  4. ttl: 查看一个key的剩余有效期.
  5. del: 删除一个指定的key.
  6. randomkey: 随机获取一个key.
  7. auth 密码 : 登录redis
string类型.

字符串类型, 即使是字符串, 但是根据字符串类型的不同, 也可以做出区分.

  1. 普通字符串.
  2. int. 整型.
  3. float: 浮点型.

一个string类型最大是5 12M.

redis的key的长度最好不要超过44(39)

string类型常用命令.
命令说明
set添加或修改已经存在的一个string的键值对.
get根据key获取string类型的value.
mset批量添加string的键值对.
mget根据多个key获取多个string类型的value.
incr让一个整型的value自增1.
incrby让一个整型的value自增并指定步长.
decr让一个整型的value自减1.
incrbyfloat让一个浮点型自增并指定步长.
setnx添加一个不存在的string的键值对, 存在则不执行.
setex添加一个string键值对, 并且指定有效期.
append追加一个值到一个key上.
strlen获取指定key的值的长度.
key的层级结构.

如果你插入的key重复了怎么办. 比如一个学校一班跟二班都有一个名叫zhangwei的. 他们的学号都是1.

1: {name: zhangwei, age: 17}
1: {name: zhangwei, age: 18}

set school:class1:1 ‘{name: “zhangwei”, age: 17}’

set school:class2:1 ‘{name: “zhangwei”, age: 18}’

hash类型.

hash类型, 它的value实际上是一个字典.

在上面的实例中, {name: “zhangwei”, age: 17}存到redis里实际上是存的一个字符串, 当你要修改里面字段的值的时候, 你只能去做 覆盖.

hash可以将字典中的每个字段单独存储, 可以只针对单个字段做增删改查.

例如:
key字段
school:class1:1namezhangwei
age17
school:class2:1namezhangwei
age18
hash常用命令.
命令说明
hset(key, 字段, 值)设置hash字段的值.
hget(key, 字段)获取hash字段的值.
hmset批量添加hash字段的值.
hmget批量获取hash字段的值.
hgetall获取一个hash中的key的所有的字段和值.
hkeys获取 一个hash中key的所有的字段.
hvals获取一个hash中key的所有值.
hincrby让一个key的字段值自增指定步长.
hsetnx添加一个hash中key的值,当这个字段不存在,否则不添加.
hlen获取hash里字段的数量.
hexists判断hash中的key是否存在某字段.
list常用命令

有序的, 元素可重复, 插入删除快.

栈: 先进后出.

队列: 先进先出.

命令说明
lpush向列表的左侧插入一个或多个元素
lpop移除并返回列表左侧的第一个元素, 没有返回nil
rpush向列表的右侧插入一个或多个元素
rpop移除并返回列表右侧的第一个元素
lrange返回一段索引(下标, index)范围内的所有元素
blpop移除返回列表左侧的第一个元素, 没有则阻塞
brpop移除返回列表右侧的第一个元素,没有则阻塞
lindex通过列表的索引获取一个元素
llen获取列表的长度
set常用命令

无序的, 元素不可重复, 查找快.

支持多集合交集, 并集查询.

命令说明
sadd向一个集合中添加一个或多个元素
srem删除集合中的元素
spop删除并获得集合中的一个元素
scard查询集合中元素的个数
sismember判断一个元素是否存在于集合中
smembers获取集合中的所有元素
srandmember随机获取集合中的元素
sinter获取key1与key2的交集
sdiff获取key1与key2的差集
sunion获取key1与key2的并集
SortedSet 有序集合常用命令

可排序的集合, 有序集合中的每一个元素都带有一个score属性.

可排序, 元素不重复, 查询速度快.

默认是升序, 如果要降序, 就要在命令前面加上rev

命令说明
zadd(key, score, member)添加一个或多个元素, 已存在则更新score值
zrem(key,member)删除一个指定的元素
zscore(key, member)获取指定元素的score值
zrank(key, member)获取指定元素的排名
zcard(key)统计元素的个数
zcount(key, min, max)统计score值在给定范围内的元素个数
zrange(key, min, max)按score排序, 获取指定排名范围内的元素
zrangebyscore(key, min, max)按score排序, 获取指定score范围内的元素
zincrby(key, incr, member)指定元素自增

创建一个学生的有序集合, 插入以下数据.

zhang: 90, wang: 81. li: 70, zhou: 60, zhao:78, yang: 53, sun: 85

  1. 删除yang同学.
  2. 获取zhou的分数.
  3. 获取wang的排名.
  4. 查询80分以下的有几个学生.
  5. 给zhao同学加2分.
  6. 查出成绩前3名的同学.
  7. 查出80分以上的所有同学.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值