Redis缓存数据库

一、缓存数据库介绍

一、Nosql not only sql 不仅仅是SQL,泛指非关系型数据库
Nosql数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。
二、Nosql 数据库的四大分类
1、键值对存储数据库
2、列表储存数据
3、文档型数据库
4、图形数据库

一、redis数据库介绍

一、Redis是键值对缓存数据库之一,支持储存的类型很多,包括字符串,链表,集合,有序集合,哈希,这些数据类型都支持增删改查,交并差集,而且这些操作都是原子性的,Redis支持不同方式的排序,为了保证效率,数据都是缓存在内存中。区别是Redis会周期性的把更新数据写入磁盘或者把修改操作写入追加的记录文件。

背景:
user generate content 用户产生内容(微博)
SNS: social network society 社交网络社会
redis 单进程单线程 底层IO多路复用

1、Redis字符串
存字符串:
set name “shiqian”
查字符串:
get name
查所有字符串:
keys *
指定存储时间:
set sex “male” ex 3 3秒后从内存消失
set sex “male” px 3000 3000毫秒后从内存消失
setex sex 3 “male” 3秒后从内存消失
psetex sex 3000 “male” 3000毫秒后从内存消失
存在时,不执行,不存在时,执行
set name “shiqian1” nx 当name存在时,不执行,不存在时,执行
setnx name “shiqian1” 当name存在时,不执行,不存在时,执行
与nx相反的xx:
set name “shiqian1” xx 当name存在时,修改name
批量设置:
mset iphone 5000 xiaomi 2499
批量获取
mget iphone xiaomi
获取并修改
getset xiaomi 3000 返回修改后的值
索引获取字符串
getrange name 0,3
索引修改字符串
setrange name 3 hahahah 从第三个开始往后改

二进制:
	setbit name 10 0      将name转化为二进制,然后将第10个二进制位转化为0
	getbit name 10        获取第10个二进制位
	bitcount name         统计有几个1
	
其他操作
	strlen name           占用字节的长度
	incr num 1             自增1
	incrbyfloat num 1.1     自增浮点
	decr num 1              自减1
	append name aaa          拼接字符串

2、Has操作的(大字典里套小字典)
hset info name “shiqian”
hset info age 18 info大字典里套小字典

hmset info name "shiqian" age 18  存多个信息

hget info age      获取其中的一个值
hgetall info       获取所有的值
hlen info 			获取里面有几个键值对
hkeys info      获取所有的key
hvals info		获取所有的val
hexists info "key"    是否存在这个key
hdel info "name"      删除掉这个key
hincrby info age 2    自增2
hincrbyfloat info age 2.2    自增浮点
hscan info 0 match s*        匹配  0代表全局,以s开头

3、列表
lpush sq_list xiaoming xiaozhang 从左边开始存
lrange sq_list 0 -1 查看元素,0 -1表示从头取到尾
ltrim sq_list 1,3 切片
rpush sq_list xiaoli 在右边追加一个值
lpushx sq_list 只有当列表存在时,才追加一个值
llen sq_list 列表的个数
linsert sq_list before xiaoming xiaohong 在小明之前把小红插进去
lset sq_list 3 xiaowang 给第三个索引位置重新赋值
lrem sq_list 2 xiaohong 删除小红和前面的一个
lpop sq_list 删除左边的第一个并返回
lindex sq_list 1 从左边获取索引为1的值,没有右边
rpoplpush sq_list sq_list2 从前面列表的右边取值方法后面列表的左边
blpop sq_list sq_list2 30
brpoplpush sq_list sq_list2 30

4、集合
sadd sq_set 1,2,3,4,3 定义一个集合
smembers sq_set 查看集合里面的值
scard sq_set 查看集合中的元素个数
sdiff sq_set sq_set2 返回在第一个集合中,不在后面集合中的元素
sdiffstore sq_set3 sq_set sq_list2 将上面返回的存到sq_set3集合中
sinter 交集
sinterstore 将交集存到集合中
smove 将摸个元素从一个集合移到另一个集合
spop 从尾部移除一个并返回
srandmember sq_set 3 从集合中随机获取3个元素
srem 删除
zadd set 有序集合

5、其他常用命令
delete 删除任意数据类型
exists 判断是否存在

6、管道
redis_py 默认在每次请求时都会链接和断开一次操作,如果想在一次请求中指定多个命令,
则使用pipline,一次pipline是一次原子性操作。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值