redis简介
关系型数据库是以表为基础单位存储数据
redis是一种非关系型数据库, 聚合数据结构存储数据。
聚合数据结构:
非关系数据库:redis ,mongoDB,HBase,。。。。
linux安装redis
第一步下载redis
第二步传输文件到linux
第三步解压目录
tar -zxvf redis的版本 -解压到什么路径
redis-5.0.2.tar.gz -C /opt
第四步 进入解压目录下,运行make命令进行编译src源程序,报错缺少gcc文件,因为没有c语言的编译文件
make
第五步安装gcc
yum -y install gcc
gcc -v//查看gcc是否安装成功
第六步重新使用make需要先执行上次的文件
make distclean
第七步再次编译src源文件
make
第八步进行快捷方式 相当于配置环境变量
make install
环境变量user/localhost/bean
启动
redis-server
查看后台启动项
ps -ef|grep redis
启动redis
1.前台启动
redis-server
2重点后台启动
redis-server &
3.启动redis是,指定配置文件
redis-server redis.conf &
关闭redis
通过redis命令关闭
redis-cli shutdown
退出客户端
exit或者quit
redis的使用
redis-cli客户端连接redis
redis-cli -p 端口号
连接其他机器的redis服务端
redis-cli -h IP地址 -p redis的端口号
redis-benchmark 测试redis服务的性能
info查看redis服务器的统计信息
info Replication查看集群信息
select 数据库的下标切换数据库
dbsize 查看当前数据库的数据的条数(查看key值)
set key value 存入
get key 获取值
keys * 获取当前数据库所有的key
fluchdb 清空当前的数据库
flushall 清空所有数据库的实例
config get * 查看所有的redis配置信息
redis的数据结构
字符串string存储单个的字符串 单key 单value
列表list 单key 有序多value存储多个有顺序的值
集合set 单key 多个无序value 存储多个无序的值
哈希hash 单key 对象(属性:值)存储对象
有序集合zset 单个key多个有序的value:存储多个有序的值,排序方式自己指定
redis操作命令
key键操作
keys *:查看数据库当中所有的key
keys k*:查看以k开头的所有的key
keys k?:查看数据库中以k开头,并且之后只有一个字符串的key
keys k[abc]:查看数据库中以k开头,并且有一个abc其中一个字符的key
exists key:判断数据库中是否存在某个key,存在返回1,不存在返回0
exists key1 key2 key3:判断数据库中是否存在key,存在一个返回1,存在二个返回2,不存在返回0
move key 数据库下标:移动指定key到指定的数据库实例
ttl key 查看指定key的生存时间,没有设置生存时间为-1,没有当前key返回-2,
expire key 20:给指定key设置生存时间,为20秒,过了20秒之后就会在内存当中删除
type key :查看指定key的数据类型
rename key newkey 重命名key的名字
del key删除指定key
del key1 key2 key3 key4 返回删除成功的key的数量,如果没有要删除的key则跳过
字符串操作命令
set 键 值 将string类型的数据保存到redis中如果设置的键存在,则会把以前的key覆盖掉
get 键 获取string类型的数据
append key value:追加字符串到指定的key当中
strlen key:获取字符串数据的长度
incr key:将字符串数值进行加一运算
decr key:将可以运算的字符串进行减一运算
incrby key 14:对可运算的字符串进行加某个数的运算(+14)
decrby key 23:对可运算字符串进行减法运算(-23);
getrange key startIndex endIndex字符串截取,从startIndex开始到endIndex索引的字符串,左右全闭
setrange key startIndex value :改变字符串的值,用value覆盖以下标为startIndex的字符串
setex key 20 value设置一个key的值,并设置他的最大生命周期
setnx key value :设置字符串类型的数据到redis数据库当中,当key不存在时设置成功,如果key存在则放弃设置
mset k1 v1 k2 v2 k3 v3.。。。设置多个string类型的数据到redis中
mget 键1 键2 键3 … 获取多个键的值,如果没有键则返回nil
msetnx k1 v1 k2 v2… 批量设置字符串数据到redis当中,当所有key都不存在时设置成功,否则全部放弃设置
redis列表list的操作命令(链表)
lpush key value value value。。。 将一个或者多个值依次插入到列表的左侧
lrange key startIndex endIndex查看指定列表中指定下标区间的元素,左右全闭区间;
rpush key v1 v2 v3。。 将一个或者多个值一次插入右侧
lpop key 移除指定列表中表头的元素,并返回表头元素
rpop key移除指定列表表位的元素,返回值为表位元素
lindex key index获取列表中指定下标的元素
llen key 获取指定列表的长度
lrem key count value 移除列表中和某个值一样的数据 ,count>0 :从列表的表头移除count个和value相等的数据;count <0 从列表的表尾移除count个和value相等的数据
count=0 移除列表中所有和value相等的元素
redis集合set类型的操作命令
sadd key v1 v2 v3 将一个或者多个元素存入set集合当中
smembers key 获取指定集合中所有的元素
sismember key value 判断指定元素在集合中是否存在,存在返回1,不存在返回0
scard key 获取指定集合的长度
srem key v1 v2 v3。。 移除指定集合中一个或者多个元素
srandmember key 【count】 随机获取指定集合中一个元素 count>0随机获取多个元素不能重复 count<0 随机获取多个元素之间可能重复 count不写为获取一个元素
spop key [count] 随机移除一个或者多个元素 count为空则移除1个元素 count为移除多少个元素
smover key newkey member 移动指定集合中的指定元素移动到另一个集合
sdiff key key1 key2 key3 .。。获取key集合当中存在但是其他集合都没有的元素组成的新集合
sinter k1 k2 k3 。。。。 获取所有集合中都有的元素组成的新集合
sunion k1 k2 k3.。。 获取多个集合的所有元素组成的大集合
hash类型数据的操作命令
可以理解为对象是key ,一个key可以存储多个属性,多个属性叫做field ,field中存储属性值
hset 哈希表名(key)属性名(field1)值(v1)属性名二(field2) 值二(v2)。。。 将一个对象设置到哈希表中
hget key field 获取指定hash表中指定的属性的值
hmget key field1 field2 field3.。。 获取批量hash表中的属性值
hgetall key 获取hash表中所有的属性名和属性值
hdel key field1 field2。。。 删除hash表中删除一个或者多个属性名 属性值也会删除
hlen key 获取指定hash表中所有的属性名个数
hexists key field 判断指定hash表中是否存在某一个属性名,存在返回1,不存在返回0
hkeys key 获取指定hash表中所有的属性名
hvals key 获取指定hash表中所有的属性值
hincrby key field int 对hash表中指定的field值进行加法运算
hincrbyfloat key field float 对指定hash表中属性值进行浮点数运算
hsetnx key field value 将对象设置到hash表中,如果当对象的key和field存在时放弃设置,否则继续设置
redis中有序集合zset操作命令
zaddkey score member score1 member1.。。将一个或者多个元素加入有序集合score为当前数值的分数,升序,可以覆盖分数
zrange key startIndex endIndex [withsoures]获取有序集合中指定下标区间的元素 withsoures可以显示每个元素的分数
zrangebyscore key min max[withsoures] 获取指定分数区间的元素
zrem key member1 member2。。。 删除指定有序集合中一个或者多个元素
zcard key 获取有序集合的长度
zrank key member 获取指定有序集合中指定元素的排名
zcount key min max 获取有序集合中分数在指定区间的元素个数
zscore key member 获取有序集合中指定元素的分数
zrevrank key member 获取指定有序集合中指定元素的反向排名