redis--->常用数据类型
set key1 v1 设置key1的值为V1 get key1 获得key keys * 查看全部的key append key "hello" 追加字符串,如果不存在就相当于setkey strlen key1 获取字符串长度 set views 0 设置初始浏览量为0 incr views 自增一 decr views 自减一 incrby views 10 设置自增步长 decrby views 5 设置自减步长
常用命令(String数据类型)
flushdb 清空数据库 getrange key1 0 -1 获取key1全部字符串 getrange key1 0 3 获取0,1,2,3 set key2 abcdefg setrange key2 1 ** 替换指定位置开始的字符串 get key2 结果:a**defg 设置key3的值为hello过期时间为30S setex key3 30 hello setnx mykey “redis” setnx mykey “mongodb” 如果key存在创建失败,如果不存在创建
同时插入、获取多条数据
mset k1 viv k2 v2 k3 v3 同时设置多个值
mget k1 k2 k3 同时获取多个值
msetnx k1 v1 k4 v4 原子性要么全部成功,要么全部失败
存储对象
set user:1 {name:zhangsan,age:3} 这里的id是一个巧妙地设计user:id:field mset user:1:name zhangsan user:1:age 2 mget user:1:name user:1:age “张三” “2” getset 先get然后set getset db redis 如果不存在值则返回nil get db "redis" getset db mongodb 如果存在值,获取原来的值并设置新的值 "redis" get db "mongodb"
List数据类型
L是队头,R是队尾 Lpush list one Lpush list two Lpush list there 栈型数据结构先进后出 lrange list 0 -1 there two one Rpush list 1 头插法 lrange list 0 -1 there two one 1 lpop list 移除列表的第一个 rpop list 移除列表的最后一个 lindex list 1 通过下标获取某一个值 lindex list 0 llen list 获取链表的长度
删除指定的一个值
移除指定的值 lrem list 1 one //移除list中的一个one值
list截取
ltrim mylist 1 2 //通过下标截取指定的长度
移除列表的最后一个元素,添加到另一个list中
rpoplpush mylist myotherlist
判断当前列表是否存在
EXISTS list
lset 将数组指定下标的值改为另一个值
lset list 0 item 如果数组不存在就会报错
在指定字符串插入到某个元素的前面或后面
linsert mylist before "world" "other" //在world前插入other
总结:
list实际上是一个链表,before node after
如果移除了所有值,空链表也代表不存在
如果key不存在,创建新的链表,如果存在新增内容
在两边插入或改动值效率最高
set
set中的元素是不可以重复的
添加元素
sadd myset "001" sadd myset "002" smembers myset //查看全部元素 sismember myset hello //set is member set中是否包含 srem myset hello //set remove 移除set的某一个元素 srandmember myset //随机抽选出一个元素 srandmember myset 2 //随机抽取出指定个数的元素 spop myset //随机删除一些set集合中的元素 smove myset myset2 "hello" //在myset中移除hello到myset2
set 的交集和并集
sdiff key1 key2 //以一为参考2没有的 sinter key1 key2 //交集 共同关注 sunion key1 key2 //并集 两个人全部元素
推荐好友,共同关注
hash哈希
map集合,key->map,这时候值是一个map集合
和string类型没啥大区别
hset myhash field1 hello //插入一个具体的key-value hget myhash field1 //获取一个字段值 hmset myhash field1 qqq field2 www //set多个key-value hmget myhash field1 field2 //获取多个字段 hgetall myhash //获取全部的key-value hdel myhash field1 //删除指定hash的key字段 hlen myhash //获取hash的字段数量 hexists myhash field1 //判断hash中指定的字段是否存在 hkeys myhash //获取全部的key hvals myhash //获取全部的value hincrby myhash field3 1 //每次自增一 hsetnx myhash field4 hello //如果存在则设置,不存在则不设置
hash适合存储变更的信息,尤其是用户信息,hash更适合对象的存储
Zset有序集合
zadd myset 1 one //添加一个值 zadd myset 2 two 3 three //添加多个值 zrange myset 0 -1 //查看全部
排序
zadd salary 2500 xiaohong zadd salary 5000 zhangsan zadd salary 500 springxian // 添加三个用户 zrangebyscore salary -inf +inf //显示所有用户从小到到排序 zrevrange salary 0 -1 //从大到小排序 zrangebyscore salary -inf 2500 //显示小于2500的所有员工 zrange salary 0 -1 //查询所有 zrem salary xiaohong //删除一个 zcount myset 1 3 //计算区间的成员数量
班级成绩排序,排行榜 Top *