Redis数据库
1、Redis简介
Redis是一个key-value 存储系统,是跨平台的非关系型数据库。Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。
Redis 通常被称为数据结构服务器,因为值(value)可以是字符串(String)、哈希(Hash)、列表(list)、集合(sets)和有序集合(sorted sets)等类型。
2、Redis的window启动
1.服务端启动:redis-server.exe my/redis6379.conf
重新打开一个cmd窗口,之前的不要关
2.客户端启动:redis-cli.exe -h 127.0.0.1 -p 6379 链接本机
3、Redis基础知识
Redis默认有16个数据库,0-15,类似数组从零开始,初始默认使用零号库,使用select命令切换数据库,Redis索引都是从零开始。
统一密码管理,16个库都是同样密码,要么都OK要么一个也连接不上。
dbsize查看当前数据库的key的数量
flushdb:清空当前库
Flushall: 清空全部库
clear: 清屏
type 键:查看数据类型 (type k1)
4、String类型数据的操作
- set k1 v1 增
- del k1 删
- set k1 v11 改
- get k1 查
- keys * / keys k* 查看所有的键
- mset k1 v1 k2 v2 k3 v3 一次设置多个值
- mget k1 k2 k3 一次获取多个值
- move k1 2 移动数据到其他库 (把k1键值对移动到2号数据库)
- exists k1 ((integer)0 表示不存在)某个键是否存在
- expire k1 10 过期时间设置 ,10秒后k1键值对过期
- ttl k1 查询过期时间
- type k1 查询数据类型
- append k1 aaaaa 在k1的值后加一串a,追加字符串
- strlen k1 字符串的长度
数字类型的字符串的操作
- incr k2 增加1
- decr k2 减少1
- incrby k2 5 增加指定的值
- decrby k2 5 减少指定的值
- getRange k3 0 2 (包括0和2)获取指定范围的值
- setrange k3 2 ijk 设置指定范围的值
- setnx k4 v4 不存在设置值(如果键值存在则失败,不存在则插入)
- setex k5 20 v5 设置值时同时设置过期时间,设置键k5的过期时间是20秒
5、List(双向链表)类型的操作
- lpush list1 1 2 3 , rpush list2 1 2 3 增
- del list2 删
- lset list1 2 33 改: 2表示是索引,33是具体修改的值
- lrange list1 0 -1 查
- llen list1 获取list的长度
- lindex list1 3 按照索引获取某个元素
- lrem list2 2 5 删除N个value,2表示的是个数,5是具体的值
- ltrim list1 1 3 截取指定的范围将其设置为原来的集合
- lpop list1 弹出源列表中的顶部的元素,出栈了,集合中就没有弹出的元素了
- linsert list1 before/after 5 abc 在指定的值前插入 ,表示在值5之前或者之后插入一个值abc
6、Set的操作
Set的操作(单值多value) 相当于java中的set集合
- sadd set1 1 2 3 3 4 4 5 添加 自动把相同的值过滤掉
- smembers set1 显示所有元素
- scard set1 获取有多少个元素
- srem set1 4 5 删除集合中的元素4,5
- srandmember set1 2 随机给出几个集合中的数
- spop set1 随机出栈
- smove set1 set2 5 将set1中的某个值移动到set2中
- sdiff set1 set2 求set2相对于set1的差集(set1是标准)
- sinter set1 set2 求set1和set2交集
- sunion set1 set2 求set1和set2并集
7、Hash类型操作
在Hash类型中,一个key可以对应多个多个field,一个field对应一个value。将一个对象存储为Hash类型的好处之一:较于每个字段都单独存储成string类型来说,更能节约内存。
- hset user name zhangsan 添加
- hget user name 获取
- hmset user1 name yangguo age 22 address beijing 添加多个
- hmget user1 name age address 获取多个value值
- hkeys user1 获取所有的属性
- hvals user1 获取所有属性的值
- hgetall user1 获取所有的属性和属性值
- hdel user1 age 删除某个
- hlen user1 长度(获取有多少个属性)
- hexists user1 age 判断键是否存在
- hincrby user age 5 增加指定的整数
- hincrbyfloat user age 0.5 增加指定的浮点数
- hsetnx user1 age 20 不存在的时候设置值
8、Zset数据类型的操作
有序集合的成员是唯一的,但分数(score)却可以重复。每个元素都会关联一个 double 类型的分数。redis 正是通过分数来为集合中的成员进行从小到大的排序。
- zadd set1 10 v1 20 v2 30 v3 40 v4 添加
- zcard set1 查看集合的成员个数
- zrange set1 0 -1 查看集合指定范围的成员
- zrange set1 0 -1 withscores 查看集合指定成员(带分数)
- zrank set1 v3 获取zset1成员的下标位置,如果值不存在返回null,v3下标为2
- zrem set1 v3 v4 删除指定的一个成员或多个成员
- zscore set1 v2 获取指定值的分数score
- zincrby set1 -5 v2 给指定元素的分数score进行增减操作,负值为减,正值为加
- 根据指定分数score的范围获取值: zrangebyscore set1 20 50 表示 20 <= score <=50 zrangebyscore set1 (20 50) 表示 20 < score < =50
- zremrangebyscore set1 (20 50) 移除给定分数区间的所有成员
- 倒序,从高到底排序输出指定范围的数据: zrevrange set1 0 -1 倒序排列 zrevrangebyscore set1 50 20 按照score在20-50之内倒序排列