一、介绍
其指的是非关系型数据库,是对不同于传统的关系型数据库的数据库管理的统称。
Redis,以字典结构存储数据,并允许其他应用通过TCP协议读写字典中的内容。使用C语言编写,并以内存作为数据存储介质,所以读写效率极高
- Redis支持数据持久化存储,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载使用
- Redis不仅仅支持简单的key-vlue类型的数据,同时把value分为list、set、zset、hash等数据结构
- Redis交换数据快,所以在服务器中常用来存储一些需要频繁调取的数据,提高效率
二、数据库操作
Redis默认支持16个数据库,从0开始的递增数字命名;操作数据库之前先运行redis-cli.exe或者命令行工具运行redis-cli或者redis-cl --raw,命令行工具运行redis-cli和redis-cl --raw需要配置环境变量,redis-cl --raw 获取数据是中文不会显示乱码
- 切换数据库:SELECT
SELECT 0
- 设置键和值(字符串类型):SET key value、MSET key value key value
SET test a #设置一个键值 MSET test1 b test2 c #设置多个键值 APPEND test 1 #在原有的字符串基础上拼接一个字符串,APPEND key value GET test #存在返回对应的value值,没有返回null表示空的意思,GET key MGET test1 test2 #同时获得多个,MGET key1 key2 STRLEN test #获取字符串长度,STRLEN key SET test3 3 g#设置键值并设置过期时间SETEX key seconds value
- 修改数字键值:INCR key、DECP key、INCRBY key value、DECRBY key value
INCR test_num # 加一 DECP test_num # 减一 INCRBY test_num 10 #加10 DECRBY test_num 10 #减10
- 设置键和值(列表类型):LPUSH key value1 value 2 value3、RPUSH key value1 value 2 value3
LPUSH test_list 3 4 5 #LPUSH 左边添加(栈 先进后出) LPUSH test_list 3 4 5 #RPUSH 右边添加(队列 先进后出) LLEN test_list #查看列表长度,LLEN key LINDEX test_list 3 #查看指定位置的元素,LINDEX key index LRANGE test_list 0 -1 #获取部分元素,LRANGE key startIndex endIndex,index可以为负数 LPOP test_list #获取列表中的第一个元素 RPOP test_list #获取列表中的最后一个元素 RPOP test_list 0 1 #删除元素,LREM key count value,删除指定value值,count可以指定删除个数负数时从列表右边开始
- 设置键和值(哈希类型):HSET key field value、HMSET key field value field value
HSET test_h name zhangsan #添加name字段值为zhangsan HSET test_h age 20 #添加age字段值为w0 HMSET test_h gender man job xuesheng #添加多个字段 HGET test_h name #获取字段值,HGET key field HMGET test_h name age #获取多个字段值,HMGET key field1 field2 HKEYS test_h #获取所有key,HKEYS key HVALS test_h #获取所有value,HVALS key HGETALL test_h #获取所有键值对,HGETALL key HLEN test_h #获取filed个数,HLEN key HEXISTS test_h name #判断字段是否存在,HEXISTS key field HINCRBY test_h age 2 #年龄增加2岁,HINCRBY key field value HDEL test_h job #删除字段,可以删除多个,HDEL key field1 field2
- 设置键和值(集合类型):SADD key value value
SADD test_set 1 2 3 #添加元素 SREM test_set 3 #删除元素,SREM key value1 value2 value3 SPOP test_set 1 #随机删除元素,SPOP key count SISMEMBER test_set 1 #判断元素是否存在,SISMEMBER key value SMEMBERS test_set #获取所有元素,SMEMBERS key SCARD test_set #获取元素集合个数,SCARD key SRANDMEMBER test_set 2#随机获取count 个数元素 count 为正数,返回count个不重复数,为负数可能出现重复数据,SRANDMEMBER key count SINTER test_set test_set1 #取多个集合交集,SINTER key1 key2 key3 SINTERSTORE test_set3 test_set test_set1 #取多个集合交集并保存,SINTERSTORE saveKey key1 key2 key3 SUNION test_set test_set1 #取多个集合并集,SUNION key1 key2 key3 SUNIONSTORE test_set3 test_set test_set1 #取多个集合并集并保存,SUNIONSTORE saveKey key1 key2 key3 SDIFF test_set test_set1 #取多个集合差集,SDIFF key1 key2 key3 SDIFFSTORE test_set3 test_set test_set1 #取多个集合差集并保存,SDIFFSTORE saveKey key1 key2 key3
- 设置键和值(有序集合类型):ZADD key score member score member score member
ZADD yuwen 90 zhangsan 86 lisi 78 wangwu #添加元素 ZCARD yuwen #获取元素个数,ZCARD key ZSCORE yuwen zhangsan #获取元素分数,ZSCORE key member ZRANGE yuwen 0 1 2 #从下到大获取member,ZRANGE key start stop [WITHSCORES],WITHSCORES获取多少个 ZREVRANGE yuwen 0 1 2 #从大到小获取member,ZREVRANGE key start stop [WITHSCORES],WITHSCORES获取多少个 ZREM yuwen lisi #移除元素,ZREM key member ZRANGEBYSCORE yuwen 70 80 #获取指定分数范围的元素,ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count] ZRANGEBYSCORE yuwen 70 (80 LIMIT 1 2 # 不取80,同时指定1到2位置查找 ZCOUNT yuwen 70 80 #获取指定分数范围的元素个数,ZCOUNT key min max ZINCRBY yuwen 5 lisi #增加某个元素的分数,ZINCRBY key score member ZREMRANGEBYSCORE test (60 80 #删除分数大于60小于80的元素,按照范围删除元素, ZREMRANGEBYRANK key start stop ZINTERSTORE youxiu 2 yuwen shuyu #获取有序集合的交集,ZINTERSTORE saveKey numkeys key [key…][WEIGHTS weight[weight…]] [AGGREGATE SUM|MIN]
- 获取键名和值:KEYS
KEYS * #查询全部 KEYS "test*" #通配符查询
- 判断键是不是存在:EXISTS key
EXISTS test
- 重命名键:RENAME old_key new_key
RENAME test test1
- 设置键过期时间:EXPIRE key seconds, seconds=-1表示删除
EXPIRE test 3
- 查看键时间:TTL key,-1表示永久,-2表示不存在
TTL test
- 设置键为永久:PERSIST key
PERSIST test
- 获取键值类型:TYPE key
TYPE test
- 删除键:DEL key1 key2、FLUSHALL
#不支持通配符 DEL test1 #支持通配符 redis-cli DEL redis-cli KEYS "test1*" #清空 FLUSHALL