NOSQL(NOT Only SQL) 泛指非关系型数据库
Redis中数据存放在内存中,也提供了Redis的持久化的方式是数据存储到磁盘,它以key-value形式存储,提供丰富的数据类型可以使用多种开发场景(支持String、list、set、hash等数据结构),并且Redis性能极高,redis 写入速度8w次/s,读取速度11w次/s,Redis具有原子性,Redis支持数据备份,集群高可用的功能。
Redis默认是有16个数据库,默认使用的是第0个数据库,可以通过select 切换数据库,Redis的命令大小写不敏感的
切换数据库 格式:select index
查看数据库大小 格式:dbsize
查看所有的key 格式:keys *
清空当前的数据库 格式:flushdb
清空所有的数据库 格式:flushall
Redis是基于内存操作的,CPU不是Redis性能瓶颈,Redis的瓶颈就是根据机器的内存和网络带宽,CPU不是性能瓶颈,就可以使用单线程的
Redis的数据都是存放在内存中,所以说单线程去操作效率就是最高的,相比多线程,减少了CPU上下文切换耗时,对于内存系统而言,没有上下文切换的效率就是最高的,多次读写都是在同一个CPU
Redis键命令的基本语法: COMMAND KEY_NAME
示例如下:
基本命令:
SET 设置key GET 查看key对应值 EXPIRE 设置key的过期时间 TTL 查看key剩余时间 EXISTS 判断当前key是否存在 KEYS * 查看所有的key DEL 删除当前key TYPE 查看key存储的value类型
设置值 格式:set key value 获取值 格式:get key
判断key是否存在 格式 exists key
追加字符串,如果key不存在,相当于是set命令 格式:append key apendvalue
获取字符串的长度 格式:strlen key
对value值进行自增1操作(如果key不存在,会被初始化为0) 格式: incr key 对value值进行自减1操作 格式:decr key
设置加减的步长 格式:incrby key num decrby key num
获取给定范围的字符串值 格式:getrange key start stop
从指定的位置开始替换字符串的值 格式:setrange key offset value
设置过期时间 格式: setex key seconds values 查看剩余时间 格式:ttl key
setnx(set if not exists) 如果指定的key不存在则设置,存在的失败 格式: setnx key value (分布式锁经常使用)
同时设置多个值 格式:mset key1 value1 key2 value2 ... 同时获取多个值 格式:mget key1 key ...
先获取值在设置值 格式:getset key value
应用场景:
类似于linkedlist链表结构,可以添加元素到列表的头部或者是尾部,同样头部和尾部都可以进行获取,可以用来作为栈、队列、阻塞队列
从列表的左侧插入值 格式:lpush key value 从列表的右侧插入值 格式:rpush key value 从列表中获取指定范围的值 格式:lrange key start stop
从列表的左侧移除值 格式:lpop key 从列表右侧移除值 格式:rpop key
获取指定下标的值 格式:lindex key index
获取列表中元素的个数 格式:llen key
已移除列表中的元素 格式:lrem key count value
移除列表中最后一个元素,将他添加到另一个列表中 格式:rpoplpush key1 key2
根据下标替换列表中的值 格式:lset key index value
应用场景:
list底层是一个链表,在l链表插入或者改动值,效率高,中间位置来修改,相对效率低一些
队列:
lpush \ rpop
栈:
lpush \ lpop
set中元素不能重复的
set实现是基于哈希表结构实现,在修改、添加等操作复杂度是O(1)
在set集合中添加数据 格式:sadd key value
获取set集合中所有值 格式:smembers key
判断某个值是否在set中 格式:sismember key value
获取set中元素个数 格式:scard key
删除set中元素 格式:srem key value
从set中随机获取值 格式:srandmember key count
随机删除指定的元素 格式:spop key [count]
应用场景:
应用:
hash是一个map集合,是key-value的map集合
插入和获取哈希的值 hset key field value /hget key field
批量的插入和获取 格式:hmset key field1 value1 field2 value2 .... 获取格式: hmget key field1 field2 ...
获取hash中所有的值 格式:hgetalll key
删除指定的filed 的哈希键值对 格式:hdel key field
判断哈数中字段是否存在 格式:hexists key field
获取哈数中所有字段或者值 格式 :hkeys key /hvals key
如果存在,则失败,如果不存在,则添加成功 格式:hsetnx key field value
应用场景:
添加一个元素 格式:zadd key score value
获取zset中一定范围内的值 格式:zrange key start stop
将zset中的值按照从小到大排序数据 格式 zrangebyscore min max
删除zset中指定的元素 格式:zrem key value
根据score的值来统计给定区间的元素的个数 格式:zcount key min max
应用场景: