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,123


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  *

 

posted @ 2021-02-26 20:50  Spring_Xian  阅读(69)  评论(0编辑  收藏  举报