\
redis默认有16个数据库,默认使用第0个数据库,可以使用select切换数据库,用flushdb或者flushall清空数据库
redis是单线程的,redis是基于内存操作的,cpu并不是redis的性能瓶颈,redis的瓶颈是基于机器的内容和网络带宽,既然可以使用单线程,就使用单线程。
redis五种基本数据类型:string hash list set zset
string:
get set flushdb 清除当前数据库 keys * #获取所有的字符串 append key的名字+需要追加的字符串 #如果当前字符串不存在,就相当于set key exitst+key的名字 strlen key #获取字符串的长度 ############################################################################################## redis的使用场景:我们在做网站阅读量的时候,可以用redis去实现 set views 0 //初始化阅读量为0 incr views //自动加1 decr views //自动减1 incrby views 10 //自动加10 decrby //自动减10 可以设置步长 ############################################################################################# getrange key 开始位置 结束位置 //截取字符串 getrange key 0 -1 //截取所有的字符串 setrange key 开始位置 需要替换的字符串 //替换字符串 ################################################################################################## setex(set with expire) //设置过期时间 set key1 30 hello //设置key1的值为hello,30s后过期 ttl key //查看过期时间 setnx(set if not exist) //不存在设置(在分布式锁中经常使用) ############################################################################################# mset key1 val1 key2 val2 key3 val3 //同时设置多个值 mget key1 key2 key3 //同时获取多个值 msetnx key1 val1 key2 val2 key3 val3 //msetnx是一个原子性操作,要么成功执行,要么都不执行成功 ######################################################################################### 设置对象 set user:1 {name:tang,age:18} #这里的key是一个巧妙的设计:user:{1}:{filed} mset user:1:name wuzhiwei user:1:age 2 mget user:1:name user:1:age ############################################################################################### getset //先get再set 如果不存在值,则把value赋值给key并返回nil,如果存在值,则更新value值,并返回更新前的value getset key value
list
\
在redis中,我们可以把list玩成-队列:先进先出 栈:先进后出 阻塞队列:两边都可以取 所有的list命令都是l开头的 ############################################################################################### 插入: lpush list value //后存进去的index为0 lrange list 开始index 结束index rpush list value //先存进去的index为0 移除 lpop list //移除列表的第一个元素 rpop list //移除列表的最后一个元素 lrange list 0 -1 //查看list所有的值 lindex list的下标 lindex list i //获取list中下标i的值 llen list //获取list的长度 移除指定的值(使用场景:粉丝取关)(list[one,two,three,three]) lrem list 1 one //移除一个one lrem list 2 three //移除两个three ltrim //截取list ltrim key start stop rpoplpush //移除列表的最后一个元素,并给列表添加一个新元素 rpoplpush old列表 new列表 lset key 下标 新的值 //可以更新已经存在的key的值,不存在的key则无法更新 linsert list(key) before(before或者after) value2(在list中的某一个元素) value12(插入的值) //插入 ###############################################################################################
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\