1.set key value
2.get key
3.del key
4.getset key 相当于get key 在se key
5.incr key 将value值 自增1 (如果key 不存在则先创建key 值为0 在自增1)
6.decr key 将value值 递减1 如果(key不存在先创建key 值为0 在自减)
7.append key value (如果键值对不存在 则先创建)
8.incrby key value (将key 增加value)
9.decrby key value (将key 减value)
只能对字符串的值为数字的使用
String 使用环境
主要用于保存 json格式字符串
redis 命令-hash
hash 的特点:占用的空间少
flushdb
1.赋值 hset key filed value 为指定的key 设定filed/value(键值对)
hset hash1 name gqy
2.hmset 设置多个字段
3.hget 取一个字段
4.hmget 取多个字段
5.hgetall 将所有字段全部取出
6删除 hdel hash uname 删除一个字段
7del key 删除整个hash
8.对数字进行操作 hincreby hash1 age num (num是增加的数据)
9.hexists hash1 uanme
10.hlen 返回hash 有多少字段
11.hkeys 获取所有的字段
12.hvals 获得所有value
redis-list
集合赋值
list1 [a b c d]
lpush key value
rpush key value
lpush list1 a b c d
lrange key start end
弹出元素(删出元素)
lpop key
rpop key
llen key
lrem(删除某种元素)(会为元素赋索引操作 效率低)
list3 [a b c b a c]
rpush list3 a b c b a c
删除链表中所有的a 元素
lrem list3 0 a 删除list3里面的所有的a
list3 [b c b c]
lrem list3 2 a (正数表示从0开始删 负数表示从尾部开始删 值表示 删的个数)
lrem list3 -2 a (从尾部删除两个a)
lset key index value
list1 [a b c d e]
将list1中的 b 替换成qqq
在下标为2元素 c前插入数据aaaa
linset list1 before b aaa
在下标为2的元素c后插入数据bbb
linsert list1 after b aaa
list1 [a b c d]
list2 [d]
#要求把list1的d元素弹出,把元素插入list2头部
rpoplpush list1 list2
循环列表
rpoplpush list1 list1 弹出在压入首部
2.redis-set
Java HashSet 无序不重复
某个元素属于set1 又属于set2
redis操作涉及两个集合的运算 效率高
sadd set1 a b c d
取值或删除 srem set1 a b
smembers 取所有的值
sismember 判断所有的值
sismember set1 a
差集运算
set1 [a b c d]
set2 [b e]
属于set1 不属于set2 acd
sdiff set1 set2 属于set1 不属于set2
属于set1 属于set2
sinter set1 set2
属于set1 或者属于set2
sunion set1 set2
集合有多少元素
scard set1
随机返回set集合中的一个成员
srandmember set1
sdiffstore 将结果存储下来
sunionstore
sinterstore
sunionstore set3 set1 set2
redis -有序set
有序 不重复
有序set集合用来做排行
zadd set1 5000 xiaoming 1000 xiaohong 500 xiaozhang
查看 zscore
zscore set1 xiaoming
zcard set1 集合元素个数
元素删除zrem
从集合中删除 xiaoming 和xiaohong
zrem set1 xiaoming xiaohong
zrange key start end(查询指定范围)
zrange set1 0 -1
zrange set1 0 -1 withscores (带上了分数)
zrevrange set 0 -1 withscores (反转)(由大到小)
根据排名范围删除元素
zremrangebyrank key start stop (根据排名范围删除元素)
根据分数范围删除元素
zremrangebyscore key min max
zrangebyscore set1 500 1000 withscores limit 0 2 (这个范围中的前两名)
zincrby set1 200 xiaozhang(加上200)
zcount set 500 1000 (这个范围内有多少)
zrank set1 xiaoming (正序排名)
zrevrank set1 xiaoming (倒叙排名)
redis 五种数据类型
String set hash list 有序set
通用命令:keys *
* 0个或多个任意字符
?表示任意一个字符
匹配key中包含name的所有
*name*
删除usename 和 name 两个键值对
del username name
exists key
rename list1 listrename(修改名字)
type key 值类型(返回的字符串为 String hash set list zset)
设置key有效/过期
expire key :
expire list2 30(设置list2 生存时间为30s)
查看list2 还有多少寿命
ttl list2
消息订阅与发布
subscribe my1 订阅频道 my1
publish my1 "9999"
psubscribe my* (批量频道发布)
redis 也有数据库 但是已经设置好了 (0,1,2,.....15)
在redis 上所做的所有数据操作默认在0 号数据库上
切换数据库
select 数据库名
select 1
把某个键值对进行键值对的移植
move username 1
清空当前数据库:flushdb
redis 服务器数据的清空:flushall
redis 批量操作 事务
mysql 事务:保证数据完整性,安全
redis 事务:进行redis语句的批量化执行
multi (开启事务)
1.set username
2.get username
exec
discard(事务回滚)
multi 开启事务
set usename sj
get usename
discard
redis 并不能保证当一个错误的语句发生时,事务回滚操作例如
multi(开启事务)
set usename guo
get usename
incr usename(错误语句)
incr usename(错误语句)
get usename
exec
(结果 只是不执行错误的语句 发生错误后的批处理语句还是执行了 )
redis 不是事务 只是为了批量操作
ping
echo
select
quit 退出当前连接
dbsize 当前数据库key 数量
info 查看redis 数据
redis 持久化
内存:高效、断电后数据会消失
硬盘:读写速度慢于内存,断电数据依旧存在
持久化 : 把数据保存在硬盘上
关系型数据库MySql持久化:
任何增删改语句,都是在硬盘上操作
断电以后,硬盘上的数据还在
非关系型数据库:
默认情况下所有的增删改都是在内存中操作
断电后数据不存在。
断电后,redis 部分数据丢失,丢失的数据在内存中。
redis 持久化 (两种策略)
RDB: 是redis 默认持久化操作
RDB:保存的不是全部数据而是一种状态(照快照)
20G 几kb
优点:1.快照的保存数据速度极快,还原数据速度极快
2.使用于灾难备份
缺点:小内存机制不适合
RDB 只要符合要求就会照快照
(随时启动,会占用一部分系统资源)
服务器正常关闭,照快照
key 满足一定条件,照快照
key满足一定条件,照快照
RDB何时照快照
1.服务器正常关闭
2.key 满足一定的条件
save 900 1 每900秒(15分钟至少有一个key发生变化),则dump 内存快照
save 300 10 每300s (5分钟)至少有20个key 发生变化,则dump内存快照
save 60 10000 每60s (一分钟)至少有10000个key 发生变化,则dump内存
快照
AOF:使用日志功能保存数据。(默认AOF机制关闭)
每秒同步:每秒进行一次AOF保存数据
每修改同步:只要有key的变化,就进行AOF保存
不同步(默认):不进行任何持久化操作
AOF操作:
保存导致key变化的语句
AOF配置:
always
everysecond
no
2.get key
3.del key
4.getset key 相当于get key 在se key
5.incr key 将value值 自增1 (如果key 不存在则先创建key 值为0 在自增1)
6.decr key 将value值 递减1 如果(key不存在先创建key 值为0 在自减)
7.append key value (如果键值对不存在 则先创建)
8.incrby key value (将key 增加value)
9.decrby key value (将key 减value)
只能对字符串的值为数字的使用
String 使用环境
主要用于保存 json格式字符串
redis 命令-hash
hash 的特点:占用的空间少
flushdb
1.赋值 hset key filed value 为指定的key 设定filed/value(键值对)
hset hash1 name gqy
2.hmset 设置多个字段
3.hget 取一个字段
4.hmget 取多个字段
5.hgetall 将所有字段全部取出
6删除 hdel hash uname 删除一个字段
7del key 删除整个hash
8.对数字进行操作 hincreby hash1 age num (num是增加的数据)
9.hexists hash1 uanme
10.hlen 返回hash 有多少字段
11.hkeys 获取所有的字段
12.hvals 获得所有value
redis-list
集合赋值
list1 [a b c d]
lpush key value
rpush key value
lpush list1 a b c d
lrange key start end
弹出元素(删出元素)
lpop key
rpop key
llen key
lrem(删除某种元素)(会为元素赋索引操作 效率低)
list3 [a b c b a c]
rpush list3 a b c b a c
删除链表中所有的a 元素
lrem list3 0 a 删除list3里面的所有的a
list3 [b c b c]
lrem list3 2 a (正数表示从0开始删 负数表示从尾部开始删 值表示 删的个数)
lrem list3 -2 a (从尾部删除两个a)
lset key index value
list1 [a b c d e]
将list1中的 b 替换成qqq
在下标为2元素 c前插入数据aaaa
linset list1 before b aaa
在下标为2的元素c后插入数据bbb
linsert list1 after b aaa
list1 [a b c d]
list2 [d]
#要求把list1的d元素弹出,把元素插入list2头部
rpoplpush list1 list2
循环列表
rpoplpush list1 list1 弹出在压入首部
2.redis-set
Java HashSet 无序不重复
某个元素属于set1 又属于set2
redis操作涉及两个集合的运算 效率高
sadd set1 a b c d
取值或删除 srem set1 a b
smembers 取所有的值
sismember 判断所有的值
sismember set1 a
差集运算
set1 [a b c d]
set2 [b e]
属于set1 不属于set2 acd
sdiff set1 set2 属于set1 不属于set2
属于set1 属于set2
sinter set1 set2
属于set1 或者属于set2
sunion set1 set2
集合有多少元素
scard set1
随机返回set集合中的一个成员
srandmember set1
sdiffstore 将结果存储下来
sunionstore
sinterstore
sunionstore set3 set1 set2
redis -有序set
有序 不重复
有序set集合用来做排行
zadd set1 5000 xiaoming 1000 xiaohong 500 xiaozhang
查看 zscore
zscore set1 xiaoming
zcard set1 集合元素个数
元素删除zrem
从集合中删除 xiaoming 和xiaohong
zrem set1 xiaoming xiaohong
zrange key start end(查询指定范围)
zrange set1 0 -1
zrange set1 0 -1 withscores (带上了分数)
zrevrange set 0 -1 withscores (反转)(由大到小)
根据排名范围删除元素
zremrangebyrank key start stop (根据排名范围删除元素)
根据分数范围删除元素
zremrangebyscore key min max
zrangebyscore set1 500 1000 withscores limit 0 2 (这个范围中的前两名)
zincrby set1 200 xiaozhang(加上200)
zcount set 500 1000 (这个范围内有多少)
zrank set1 xiaoming (正序排名)
zrevrank set1 xiaoming (倒叙排名)
redis 五种数据类型
String set hash list 有序set
通用命令:keys *
* 0个或多个任意字符
?表示任意一个字符
匹配key中包含name的所有
*name*
删除usename 和 name 两个键值对
del username name
exists key
rename list1 listrename(修改名字)
type key 值类型(返回的字符串为 String hash set list zset)
设置key有效/过期
expire key :
expire list2 30(设置list2 生存时间为30s)
查看list2 还有多少寿命
ttl list2
消息订阅与发布
subscribe my1 订阅频道 my1
publish my1 "9999"
psubscribe my* (批量频道发布)
redis 也有数据库 但是已经设置好了 (0,1,2,.....15)
在redis 上所做的所有数据操作默认在0 号数据库上
切换数据库
select 数据库名
select 1
把某个键值对进行键值对的移植
move username 1
清空当前数据库:flushdb
redis 服务器数据的清空:flushall
redis 批量操作 事务
mysql 事务:保证数据完整性,安全
redis 事务:进行redis语句的批量化执行
multi (开启事务)
1.set username
2.get username
exec
discard(事务回滚)
multi 开启事务
set usename sj
get usename
discard
redis 并不能保证当一个错误的语句发生时,事务回滚操作例如
multi(开启事务)
set usename guo
get usename
incr usename(错误语句)
incr usename(错误语句)
get usename
exec
(结果 只是不执行错误的语句 发生错误后的批处理语句还是执行了 )
redis 不是事务 只是为了批量操作
ping
echo
select
quit 退出当前连接
dbsize 当前数据库key 数量
info 查看redis 数据
redis 持久化
内存:高效、断电后数据会消失
硬盘:读写速度慢于内存,断电数据依旧存在
持久化 : 把数据保存在硬盘上
关系型数据库MySql持久化:
任何增删改语句,都是在硬盘上操作
断电以后,硬盘上的数据还在
非关系型数据库:
默认情况下所有的增删改都是在内存中操作
断电后数据不存在。
断电后,redis 部分数据丢失,丢失的数据在内存中。
redis 持久化 (两种策略)
RDB: 是redis 默认持久化操作
RDB:保存的不是全部数据而是一种状态(照快照)
20G 几kb
优点:1.快照的保存数据速度极快,还原数据速度极快
2.使用于灾难备份
缺点:小内存机制不适合
RDB 只要符合要求就会照快照
(随时启动,会占用一部分系统资源)
服务器正常关闭,照快照
key 满足一定条件,照快照
key满足一定条件,照快照
RDB何时照快照
1.服务器正常关闭
2.key 满足一定的条件
save 900 1 每900秒(15分钟至少有一个key发生变化),则dump 内存快照
save 300 10 每300s (5分钟)至少有20个key 发生变化,则dump内存快照
save 60 10000 每60s (一分钟)至少有10000个key 发生变化,则dump内存
快照
AOF:使用日志功能保存数据。(默认AOF机制关闭)
每秒同步:每秒进行一次AOF保存数据
每修改同步:只要有key的变化,就进行AOF保存
不同步(默认):不进行任何持久化操作
AOF操作:
保存导致key变化的语句
AOF配置:
always
everysecond
no