一、Redis的简介
1、Redis--REmote DIctionary Server(远程字典服务器)
2、Redis是一个使用ANSI C语言编写的开源数据库
3、高性能的key-value数据库
4、内存数据库,支持数据持久化(将内存数据导出到硬盘上)
5、Redis 提供了java, C/C++, C#, PHP, JavaScript, Perl, Object-C, Python, Ruby, Erlang等客户端
6、从2010年3月15日起,Redis的开发工作由VMware主持
7、从2013年5月开始,Redis的开发由Pivotal赞助
二、Redis网址
1、Redis官网: https://redis.io
2、Redis中国官网: http://redis.cn
三、Redis的常用类型
数据类型(type)-->string, hash, list, set, sorted set
编码方式(encoding)-->raw, int, ht, zipmap, linkedlist, ziplist, intset
数据指针(ptr)
虚拟内存(vm)
其他信息
四、Redis开发语言的客户端介绍(网址)
1、Redis官网:https://reids.io/clients
2、Redis中国官网:http://redis.cn/clients.html
五、Redis版本下载
1、Linux:
Redis2.8.0.tar.gz
http://download.redis.io/releases/
2、Windows:
Redis-x64-2.8.2402
由Microsoft Open Tech Group维护
https://github.com/MicrosoftArchive/redis
六、Redis安装
Windows下载完成后解压就可以使用
七、Redis单实例配置
1、Redis.conf配置文件
2、Port端口
3、Requirepass密码
4、Masterauth主从同步中在slave配置master的密码
八、Redis单实例服务端,客户端启动及关闭
1、启动redis服务端
Redis-server
Redis-server ${redis.conf}:添加配置文件
Redis-server --port ${port} :添加端口号
2、启动redis客户端
Redis-cli
Redis-cli -p ${port}:服务端添加端口号客户端也需要添加
Redis-cli -h ${ip}:添加ip
Redis-cli -a ${password}:配置文件加入密码,客户端需要添加密码
Redis-cli -p ${port} -h ${ip} -a ${password} :加入端口号,ip和密码
3、关闭客户端
Redis-cli shutdown(默认关闭6379端口)
Redis-cli -p ${port} shutdown:加入端口号
Redis-cli -h ${ip} shutdown:加入ip
Redis-cli -p ${port} -h ${ip} shutdown:加入端口号和ip
九、Redis单实例环境验证
1、执行ping命令
2、执行redis set 和 get 命令检测一下
十、Redis的基本操作
1、打开服务端redis-server.exe
2、打开客户端redis-cli.exe
3、关闭客户端,并将文件保存到磁盘中:redis-cli shutdown
4、-p(端口,默认的端口是6379) -h(ip,默认的IP是127.0.0.1) -a(密码,默认没有密码)
5、测试服务是否成功: ping 返回 PONG
6、终止命令 Ctrl + c
7、添加密码: requirepass 密码
8、主从: masterauth 密码
9、命名空间默认为0, 共有16个,如果想要切换空间可以:select value(例 select 1)
十一、Redis系统级基础命令
1、查看版本信息:info
Keyspace(相当于数据库,默认含有16个数据库)
2、清除当前空间:flushdb
3、清除所有空间:flushall
4、查看key的数量:dbsize
5、人工保存到磁盘:save
6、退出链接:quit
十二、Redis的键命令
1. 删除:del key
2. 判断是否含有某key值:exists key
3. 剩余过期时间:ttl key
返回: -1 永久
-2 不存在
设置过期时间:expire key time(s:秒)
4. 返回key的类型:type key
5. 随机返回key值:randomkey
6. 重命名key: rename oldkey newkey
覆盖已经存在的key值
不去校验是否已经存在key
7. 重命名key: renamenx oldkey newkey
校验已经存在的key,如果存在返回0,不存在继续重命名的操作
十三、五种数据结构
1、String字符串(nx结尾的命令会进行一些判断)
1. 设置: set key value
2. 设置:setnx key value
验证是否含有想要设置的key,如果有,则不能成功设置,返回0如果没有,则设置成功,返回1
3. 设置有效期的String(秒): setex key time(s) value
4. 设置有效期的string(毫秒): psetex key time(ms) value
5. 获取:get key
6. 获取value的区间值:getrange key index index (下标从0开始)
7. 先获取再设置:getset key value
先获取key的值,再进行设置,并且返回oldvalue(旧值)
8. 同时设置多个值:mset key1 value1 key2 value2
9. 同时设置多个值:msetnx key1 value1 key2 value2
验证是否含有想要设置的key,如果有,则不能成功设置,返回0如果没有,则设置成功,返回1
Msetnx具有事务的原子性
10. 同时获取多个值:mget key1 key2
11. 获取key值得长度:strlen key
12. 追加字符串:append key addValue
在key原来value的基础上,在末尾加上addValue
13. 操作数值加一:incr key(数值类型)
increase
14. 操作数值加想要的步长:incrby key count(想要每次增加的数量)
15. 操作数值减一:decr key(数值类型)
decrease
16. 操作数值减想要的步长:decrby key count(每次想要减少的数量)
2、哈希hash
1. 设置:hset key1 key2 value(例:hset map name laowang)
2. 设置(检查):hsetnx key1 key2 value
检查将要设置的key2和value是否存在于key1中,存在不成功,不存在设置成功
3. 检查key是否存在:hexists key1 key2
成功返回1; 失败返回0
4. 获取:hget key1 key2
成功返回value, 失败返回nil
5. 获取全部数据(包括key2 和value):hgetall key1
6. 获取key2值:hkeys key1
7. 获取value值:hvals key1
8. 获取数量(获取的是key2的数量):hlen key1
9. 设置多个数据:hmset key1 key2 value2 key3 value3
10. 获取多个数据:hmget key1 key2 key3
11. 删除多个数据:hdel key1 key2 key3
3、列表list
1. 添加:lpush key value1 value2 value3
第一个进的值(value1)在索引位置最后; 最后一个进的值(value3)在索引位置0;
Value值可以重复,有序
2. 获取长度:llen key
3. 获取key中的区间值:lrange key index1 index2
4. 设置指定索引位置的值:lset key index value
5. 获取指定索引位置的值:lindex key index
6. 删除索引位置为0的元素:lpop key
7. 删除索引位置最后的元素:rpop key
4、集合set
添加,删除,查找的时间复杂度为 o1
1. 添加:sadd key value1 value2 value3
无序,不能重复
2. 返回集合的数量:scard key
3. 查看集合中的成员:smembers key
4. 差集:sdiff key1 key2
哪一个key在前面,就返回哪一个key的不相同的值
5. 交集:sinter key1 key2
返回相同的值
6. 并集:sunion key1 key2
返回所有的值,如果有重复的值只返回一个
7. 随机返回指定数量的数据:srandmember key count
8. 验证是否是指定集合的成员元素:sismember key value
9. 移除集合中一个或多个元素:srem key value1 value2
10. 移除一个随机元素并且返回移除的元素:spop key
5、有序集合sortedset
1. 添加:zadd key value1 key1 value2 key2 (例: zadd sortedset 100 a 200 b)
Value需要是数值
根据value值从小到大排序
key不能重复
2. 获取存储的数量:zcard key
3. 获取key中某个key1或者key2··的value值:zscore key key1
4. 获取指定分数区间的数量:zcount key value1 value2(例: zcount key 0 300)
5. 返回指定key的索引位置: zrank key key1
6. 给指定的key增加指定的数值: zincrby key value1 key1
7. 返回指定索引位置区间的key值: zrange key index1 index2
8. 返回指定索引位置区间的key值和value值:zrange key index1 index2 withscores