首页 > 技术文章 > redis入手日记

geekestli 2021-09-24 15:31 原文

一、redis数据类型:

redis有5种基础数据类型,string,list,hash,set,zset,三种特殊数据类型,stringbit,HyperLogLog,geo

 

二、redis常规命令:

flushdb:清空当前数据库

select num:切换当前操作的数据库

flushall:清空所有数据库

config get *:获取当前redis配置

info replication:获取集群配置状态信息

keys *:查询当前数据库所有对象

type 对象名:查询对象类型

 

三、redis各种类型的增删改查:
1、string(储存一个键值对)
增:set key value 删:del key 改:getset key value 查:get key
例:mset name zhangsan age 18 sex 0 ,mget name age sex,getset age 18,del name age sex
增(带过期时间):setex key second value 查过期时间:ttl key
例:setex name 100 lisi,ttl name

2、list(储存一个数组,可当做栈和队列)
增:lpush listname element,rpush listname element,linsert listname after pivot element
删:lrem listname count element,lpop listname,rpop listname
查:lrange listname 0 -1,lindex listname index
例:lpush city beijing shanghai,lrange 0 -1,lpop city,lrem city 1 shanghai

3、hash(储存一个键值对数组)
增:hset key field value 删:hdel key field 改:hset key field value 查:hgetall key
例:hmset school teacher 50 student 5000,hgetall school,hexists school student

4、set(储存一个不重复集合)
增:sadd setname element 删:srem setname element 查:smembers setname
例:sadd ctiy bj sh gz cq,arem city bj,smembers city

5、zset(储存一个带排序的不重复集合,排序按照score)
增:zadd zsetname score element 删:zrem zsetname element 查:srange zsetname 0 -1
例:zadd fruit apple grape orenge,zrem fruit grape,zrange fruit 0 -1

6、geo(储存地理位置,经纬度点,本质是zset)
增:geoadd key longitude latitude value 删:zrem key value 查:geopos key value
两地距离:geodist key value1 value2,定点区域内位置集合:georadius key long lat radius unit
成员点区域内位置集合:georadiusbymember value radius unit
例:geoadd area 130 34 beijing 135 23 shanghai,zrem area beijing,zrange area 0 -1
geodist area beijing shanghai,georadius area 150 23 500 km
georadiusbymember area beijing 1000 km

7、HyperLogLog(基数统计的算法,有一定误差)
增:pfadd key value 查:pfcount key 合并:pfmerge newkey key1 key2
例:pfadd names sz ls wmz ,pfcount names ,pfmerge newkey names1 names2

8、stringbit(位图,应用于签到、打卡状态记录,value占1bit,只能是0和1)
增:setbit key index value 改:setbit key index value 查:getbit key index
计数:bitcount key 下标:bitpos key v
例:setbit check 0 1,getbit check 0,bitcount check,bitpos check 1

9、各种数据类型中的整形自增函数
set age 18, 自增1:incr age,自减1:decr age,自增n:incrby age n,自减n:decrby age n
hset home nan 4 nv 3,自增n:hincrby home nan n,自减n:hincrby home nan -n
zadd name zs 0 ls 0 wmz 0,自增n: zincrby name n ls

 

 四、redis发布订阅和事物:

redis 发布/订阅 用于公众号,聊天室等即时通信构建,架构图看菜鸟教程
订阅频道:subscribe channel 发布内容:publish channel msg
例:subscribe baidubaike,publish baidubaike “牛:牛是一个牲口”

redis 事务,属于数据库事务,保证多条语句在并发中正常执行
开启事务:multi 执行事务:exec 关闭事务:discard 乐观锁:watch object
例:
setnx zs 100 zs存100
setnx ls 100 ls存100
watch zs ls 监视zs和ls
multi 开启zs给ls转20事务
incrby zs -20 zs减20
incrby ls 20 ls加20
exec 执行事务,如果在此期间zs和ls存款有变化,事务则执行失败


事务执行过程中存在两种错误,语法错误和运行错误,语法错误时事务所有语句不会执行,
运行错误时,只有运行错误的语句不会执行

 

推荐阅读