是以key-value形式存储,非关系型,分布式,开源的,水平可扩展的,基于内存的数据库,数据都是换存在内存中,也可以周期性的把数据写入磁盘,把修改命令追加到文件中。
默认将数据库分为16份db0-db15,默认使用db0;
- 优点:
- 对数据的高并发读写
- 对海量数据的高效存储和访问
- 对数据的高扩展性和高可用性
- 缺点
- ACID处理简单
- 无法做到太复杂关系数据库模型
数据类型:
一共string,list,hash,set,zset五种数据类型
- string类型
二进制安全的,是包含多种类型的特殊类型,比如:对象的序列化,图片的二进制,简单的字符串,数值等
set,get,del方法
- set key value:存值(也可以用来修改值);get key:取值;del key:删除值
- setnx key value:如果存在当前key,不存储,如果不存在,则存储
- setex key 10 value:存储生命周期10秒的键值对
- setrange key 10 ww:替换字符串,从第十位开始将ww替换原来的字符
- mset k1 v1 k2 v2:一次设置多个值,mget k1 k2:一次获取多个值
- append key value:追加字符串
- strlen key:获取字符串长度
- hash类型
hash类型是string类型键值对的映射表,即string的集合,更加适合存储对象
- hset hashname key value:hset是集合命令,hashname是集合名字;hget hashname key:取值
- hmset hashname k1 val1 k2 val2:批量存值,hmget hashname k1 k2 :批量取值
- hexists hashname key:是否存在当前key,存在返回1,不存在,返回0
- hdel hashname key:删除键值对
- hgetall hashname :返回所有键值对
- list类型
是一个列表结构的集合,是一个双端列表结构,既可以做栈又可以做队列
-
lpush list a b c :从左向list中添加a b,c三个值(栈),先进后出;
-
lpop list :取出并删除最左侧的值;
-
rpush list 1 2 3 :从右向list中添加1 2 3三个值(队列),先进先出;
-
rpop list :取出并删除最右侧的值;
-
lrange list 0 -1 :取出list中的所有的值(没有rrange) ;
-
linsert list before 1 abx :在1的前面插入abx;
-
lset list 3 hello :修改指定元素的值
-
lindex list 1 :查看列表中的值(和lpop的区别是查看的值不会被删除)
-
llen list :查看列的长度
- set类型
是string类型的无序集合,底层是hashtable,可以做交集,并集,差集
- sadd set1 a b c d :向集合中添加元素
- smembers set1 :查看集合中的元素
- srem set1 a :删除集合中的元素
- spop set1 :取出并删除集合中的元素
- sdiff set1 set2 :比较两个集合差值,哪个集合在前就会显示前面这个集合中的在后一个集合中所没有的元素
- sdiffstore set3 set1 set2 :将set1与set2的差值存储到set3中
- sinterset1 set2 :列出set1和set2中相同的元素(求交集)
- sinterstore set3 set1 set2 :将交集结果存储到set3中
- sunion set1 set2 :列出set1和set2并集(set1和set2所有元素)
- sunionstore set3 set1 set2 :将并集结果保存到set3中
- sismember set3 fansik :判断set3里是否有fansik,有则返回1,没有则返回0
- srandmember set3 :随机取出set3中的一个元素
- zset类型
是string类型的无序集合
- zadd zset 1 abs 2 ddd :创建有序集合
- zrange zset 0 -1 :查看有序集合元素,按顺序显示
- zrange zset 0 -1 withscores :带分值显示
- zrem zset 123 :删除一个元素
- zrank zset 555 :返回元素的索引值,索引值从0开始,按score正向排序
- zrevrank zset 444 :返回元素的索引值,索引值从0开始,按score反向排序
- zcard zset :反馈集合中所有元素的个数
- zcount zset 1 10 :返回分值范围内1-10的元素个数
- zrangebyscore zset 1 10 :返回分值范围内1-10的元素
- zremrangebyrank zset 0 2 :删除索引范围0-2的元素,按score正向排序
- zremrangebyscore zset 1 10 :删除分值范围1-10的元素
键值和服务器命令
- keys* :取出所有key值
- keysset* :模糊匹配existslist #有list键返回1,否则返回0
- del list :删除list键成功返回1,否则返回0
- expire set1 10 :修改set1的过期时间为10秒
- ttl set1 :查看set1键还有多长时间过期,单位是s,当kset1不存在时,返回-2,当set1存在但是没有设置剩余生存时间,返回-1,否则, 返回set1的剩余生存时间
- select 1 :选择数据库,默认进入0数据库
- move set1 2 :把set1移动到2数据库
- persist zset :取消zset的过期时间
- randomkey :随机返回一个key
- rename key4 keyfansik :重命名一个key
- type keyfansik :查看一个键的类型
服务相关的操作
- dbsize :返回当前数据库中键的个数
- info :返回redis数据库状态信息
- flushdb :清空当前数据库中所有的键
- flushall :清空所有数据库中的所有的key
- bgsave : 将数据保存到rdb中,在后台运行
- save :间数据保存到rdb中,在前台运行
- config get* :获取redis的配置信息
- config get bind : 获取监听地址
- config get dir :获取redis的dir配置
- config set timeout 1000 : 设置连接超时时间
- 将config命令改名 :在配置文件中添加: rename-command CONFIG fansik
- 禁用config命令: rename-command CONFIG "" 修改配置后需要重启服务